تبدیل عدد به حروف در اکسل | آموزش ساده و کاربردی

اکسل یکی از پرکاربردترین ابزارها برای محاسبات، مدیریت اطلاعات مالی و تهیه گزارش‌های مختلف است. گاهی نمایش عدد به شکل حروف نیز اهمیت پیدا می‌کند. برای مثال، در فاکتورها، چک‌ها، قراردادها و اسناد مالی ممکن است لازم باشد مبلغ عددی مانند «۱۲۵۰۰۰۰» به عبارت «یک میلیون و دویست و پنجاه هزار» تبدیل شود. در چنین شرایطی، قابلیت تبدیل عدد به حرف در اکسل می‌تواند فرایند ثبت و آماده‌سازی اطلاعات را ساده‌تر و سریع‌تر کند. در این مطلب از آکادمی همراه اول، روش‌های تبدیل عدد به حروف در اکسل و همچنین مشکلات رایج این فرایند را بررسی می‌کنیم تا بتوانید مناسب‌ترین روش را برای نیاز خود انتخاب کنید.

فهرست مطالب
فهرست مطالب
تصویر شاخص مقاله تبدیل عدد به حروف در اکسل با تمرکز بر روش‌های تبدیل اعداد و مبالغ به حروف با استفاده از فرمول، ابزار و افزونه

روش‌های تبدیل عدد به حروف در اکسل

برای تبدیل عدد به حروف در اکسل، روش‌های مختلفی در دسترس است و انتخاب بهترین روش به نوع اطلاعات، حجم داده‌ها و نحوه استفاده از خروجی بستگی دارد. در برخی موارد نیز می‌توان از هوش مصنوعی برای اکسل در انجام کارهای مرتبط با داده‌ها و ساده‌تر کردن فرایندها کمک گرفت.

اکسل به‌صورت پیش‌فرض تابع مستقیمی برای تبدیل اعداد به کلمات ندارد. به همین دلیل کاربران از روش‌هایی مانند توابع سفارشی VBA، افزونه‌ها یا فرمول‌های اکسل آماده مانند VLOOKUP در اکسل استفاده می‌کنند.

آموزش تبدیل عدد به حروف در اکسل برای تبدیل مقادیر عددی به عبارت نوشتاری و استفاده از آن در فایل‌های کاری و محاسبات Excel

هر یک از این روش‌ها مزایا و محدودیت‌های خاص خود را دارند و ممکن است در مواجهه با اعداد بزرگ، اعداد اعشاری، اعداد منفی یا زبان فارسی با چالش‌هایی همراه شوند. در ادامه، مهم‌ترین روش‌های تبدیل عدد به حروف در اکسل را بررسی می‌کنیم.

وبینار معرفی مسیر شغلی تحلیل‌گر داده
پیام  اسفندیاری پیام اسفندیاری
علوم داده

وبینار معرفی مسیر شغلی تحلیل‌گر داده

۴,۰ (۴۵ رای) ۱۶۱۸ نفر ۷۴ ساعت و ۴ دقیقه
رایگان
بیشتر

 تبدیل عدد به حروف در اکسل با VBA

VBA مخفف عبارت Visual Basic for Applications و زبان برنامه‌نویسی است که توسط شرکت مایکروسافت توسعه داده شد. این زبان برنامه نویسی برای خودکارسازی و انجام کارهای مختلف به نرم‌افزارهای مایکروسافت ازجمله اکسل اضافه شده است. 

برای استفاده از این روش، یک کد VBA می‌نویسم تا یک تابع سفارشی، مثلا با نام NumbertoWords، ایجاد کنیم. سپس می‌توانم از این تابع در محیط اکسل استفاده کنیم. این تابع عدد را به‌عنوان ورودی دریافت می‌کنیم و معادل آن را به حروف نمایش می‌دهد. در ادامه نحوه نوشتن این کد و استفاده از آن برای تبدیل عدد به حروف در امسل را توضیح می‌دهیم.

وارد کردن کد تبدیل عدد به حروف

برای شروع، ابتدا باید ویرایشگر VBA را باز کنید. برای این کار، در حالی که در محیط اکسل هستید، کلیدهای Alt + F11 را روی صفحه‌کلید فشار دهید.

پس از باز شدن ویرایشگر VBA، از منوی بالای صفحه روی گزینه Insert کلیک کنید و سپس Module را انتخاب کنید. با این کار، یک ماژول جدید ایجاد می‌شود که می‌توانید کد VBA خود را در آن بنویسید. برای پاک کردن فرمولی که نوشته‌اید کافی است از پنجره VBA روی Module مربوط کلیک راست و remove module را انتخاب کنید.

در این ماژول جدید، باید کدی را وارد کنید که تابع سفارشی تبدیل اعداد به حروف در اکسل را ایجاد می‌کند. می‌توانید خودتان این کد را بنویسید یا از کد VBA ارائه‌شده در ادامه این مطلب استفاده کنید.

کد VBA برای تبدیل عدد به حروف انگلیسی:

Prompt
' VBA Function to Convert Number to Word in Excel
Function NumToWords(ByVal MyNumber As Variant, Optional isProper As Boolean = False) As String
    Dim Units As String, SubUnits As String, TempStr As String
    Dim DecimalPlace As Integer, Count As Integer
    Dim Place(9) As String
    Dim strNumber As String
    
    ' Define Place values
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "
    Place(6) = " Quadrillion "
    Place(7) = " Quintillion "
    
    ' Check if the input is empty or not a number
    If IsEmpty(MyNumber) Or Not IsNumeric(MyNumber) Then
        NumToWords = ""
        Exit Function
    End If

    ' FIX 1: Convert to string using Format to avoid Scientific Notation (e.g., 1E+10)
    ' This ensures we get pure digits.
    strNumber = Trim(Format(MyNumber, "0.################"))

    ' Handle Zero Case (Pure Zero)
    If Val(strNumber) = 0 And InStr(strNumber, ".") = 0 And InStr(strNumber, ",") = 0 Then
        NumToWords = "Zero"
        Exit Function
    End If

    ' FIX 2: Handle Decimal Separator (Dot or Comma)
    ' We normalize commas to dots to make the rest of the logic standard
    strNumber = Replace(strNumber, ",", ".")
    
    ' Find position of decimal place
    DecimalPlace = InStr(strNumber, ".")

    ' Convert Decimal Part
    If DecimalPlace > 0 Then
        ' Extract the decimal part
        SubUnits = GetDecimalWords(Mid(strNumber, DecimalPlace + 1), isProper)
        ' Remove decimal part from the main string for integer processing
        strNumber = Trim(Left(strNumber, DecimalPlace - 1))
    End If

    ' Process Integer Part
    Count = 1
    Do While strNumber <> ""
        TempStr = GetHundreds(Right(strNumber, 3))
        
        ' Only add the Place name if the group isn't 000
        If TempStr <> "" Then
             ' Place(1) is empty by default, which correctly handles the "Hundreds" group
            Units = TempStr & Place(Count) & Units
        End If
        
        ' Slice off the last 3 digits
        If Len(strNumber) > 3 Then
            strNumber = Left(strNumber, Len(strNumber) - 3)
        Else
            strNumber = ""
        End If
        
        Count = Count + 1
        ' Safety break to prevent errors if number exceeds defined Places
        If Count > UBound(Place) Then Exit Do
    Loop

    ' Combine Integer and Decimal Parts
    If SubUnits = "" Then
        NumToWords = Application.Trim(Units)
    Else
        ' If Integer part was effectively zero (e.g., input was 0.50)
        If Units = "" Then Units = "Zero"
        NumToWords = Application.Trim(Units & " Point " & SubUnits)
    End If
End Function

' Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
    Dim Result As String
    If Val(MyNumber) = 0 Then Exit Function
    MyNumber = Right("000" & MyNumber, 3)
    
    ' Convert Hundreds Place
    If Mid(MyNumber, 1, 1) <> "0" Then
        Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
    End If
    
    ' Convert Tens and Ones Place
    If Mid(MyNumber, 2, 1) <> "0" Then
        Result = Result & GetTens(Mid(MyNumber, 2))
    Else
        Result = Result & GetDigit(Mid(MyNumber, 3))
    End If

    GetHundreds = Result
End Function

' Converts a number from 10 to 99 into text
Function GetTens(TensText)
    Dim Result As String
    Result = ""
    
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
        Select Case Val(TensText)
            Case 10: Result = "Ten"
            Case 11: Result = "Eleven"
            Case 12: Result = "Twelve"
            Case 13: Result = "Thirteen"
            Case 14: Result = "Fourteen"
            Case 15: Result = "Fifteen"
            Case 16: Result = "Sixteen"
            Case 17: Result = "Seventeen"
            Case 18: Result = "Eighteen"
            Case 19: Result = "Nineteen"
        End Select
    Else ' If value between 20-99...
        Select Case Val(Left(TensText, 1))
            Case 2: Result = "Twenty "
            Case 3: Result = "Thirty "
            Case 4: Result = "Forty "
            Case 5: Result = "Fifty "
            Case 6: Result = "Sixty "
            Case 7: Result = "Seventy "
            Case 8: Result = "Eighty "
            Case 9: Result = "Ninety "
        End Select
        Result = Result & GetDigit(Right(TensText, 1))
    End If

    GetTens = Result
End Function

' Converts a number from 1 to 9 into text
Function GetDigit(Digit)
    Select Case Val(Digit)
        Case 1: GetDigit = "One"
        Case 2: GetDigit = "Two"
        Case 3: GetDigit = "Three"
        Case 4: GetDigit = "Four"
        Case 5: GetDigit = "Five"
        Case 6: GetDigit = "Six"
        Case 7: GetDigit = "Seven"
        Case 8: GetDigit = "Eight"
        Case 9: GetDigit = "Nine"
        Case Else: GetDigit = ""
    End Select
End Function

' Converts Decimal Digits to Words
Function GetDecimalWords(DecimalPart As String, isProper As Boolean) As String
    Dim i As Integer, DecWord As String
    Dim TwoDigits As String

    If isProper Then
        ' Mode: Digit by Digit (e.g., 87.04 -> "Eighty Seven Point Zero Four")
        For i = 1 To Len(DecimalPart)
            If i > 1 Then DecWord = DecWord & " "
            
            ' FIX: Explicitly handle "0" so it says "Zero" instead of skipping it
            If Mid(DecimalPart, i, 1) = "0" Then
                DecWord = DecWord & "Zero"
            Else
                DecWord = DecWord & GetDigit(Mid(DecimalPart, i, 1))
            End If
        Next i
    Else
        ' Mode: Pairs (Standard)
        ' Logic: Take first two digits. If it is "04", we must force "Zero Four".
        
        TwoDigits = Left(DecimalPart & "00", 2)
        
        ' FIX: Check if the pair starts with 0 (and isn't 00)
        If Left(TwoDigits, 1) = "0" And TwoDigits <> "00" Then
             DecWord = "Zero " & GetDigit(Right(TwoDigits, 1))
        Else
             DecWord = GetTens(TwoDigits)
        End If
    End If

    GetDecimalWords = DecWord
End Function

کد VBA برای تبدیل عدد به حروف فارسی:

Prompt
Option Explicit

' ==========================================
' Main Function
' Usage:
' =NumberToWordsFa
' ==========================================

Function NumberToWordsFa(ByVal MyNumber As Variant) As String

    Dim NumberText As String
    Dim WholePart As String
    Dim DecimalPart As String
    Dim DecimalPlace As Long
    Dim Result As String
    Dim IsNegative As Boolean
    Dim i As Long

    NumberText = Trim(CStr(MyNumber))

    ' Remove commas
    NumberText = Replace(NumberText, ",", "")

    ' Check negative number
    If Left(NumberText, 1) = "-" Then
        IsNegative = True
        NumberText = Mid(NumberText, 2)
    End If

    ' Check decimal point
    DecimalPlace = InStr(NumberText, ".")

    If DecimalPlace > 0 Then
        WholePart = Left(NumberText, DecimalPlace - 1)
        DecimalPart = Mid(NumberText, DecimalPlace + 1)
    Else
        WholePart = NumberText
        DecimalPart = ""
    End If

    ' Remove leading zeros
    Do While Len(WholePart) > 1 And Left(WholePart, 1) = "0"
        WholePart = Mid(WholePart, 2)
    Loop

    ' Convert whole number
    Result = ConvertLargeNumber(WholePart)

    ' Zero
    If Result = "" Then
        Result = F_Zero()
    End If

    ' Negative
    If IsNegative Then
        Result = F_Negative() & " " & Result
    End If

    ' Decimal part
    If DecimalPart <> "" Then

        Result = Result & " " & F_And() & " " & F_Decimal()

        For i = 1 To Len(DecimalPart)
            Result = Result & " " & GetDigitFa(Mid(DecimalPart, i, 1))
        Next i

    End If

    NumberToWordsFa = Application.WorksheetFunction.Trim(Result)

End Function


' ==========================================
' Convert large numbers
' ==========================================

Private Function ConvertLargeNumber(ByVal NumberText As String) As String

    Dim Groups() As String
    Dim GroupCount As Long
    Dim i As Long
    Dim GroupText As String
    Dim Result As String
    Dim ScaleText As String

    GroupCount = 0

    ' Split number into 3-digit groups
    Do While Len(NumberText) > 0

        GroupCount = GroupCount + 1
        ReDim Preserve Groups(1 To GroupCount)

        If Len(NumberText) > 3 Then

            Groups(GroupCount) = Right(NumberText, 3)
            NumberText = Left(NumberText, Len(NumberText) - 3)

        Else

            Groups(GroupCount) = NumberText
            NumberText = ""

        End If

    Loop

    ' Process groups from left to right
    For i = GroupCount To 1 Step -1

        GroupText = ThreeDigitFa(Groups(i))

        If GroupText <> "" Then

            ScaleText = GetScaleFa(i)

            If Result <> "" Then
                Result = Result & " " & F_And() & " "
            End If

            Result = Result & GroupText

            If ScaleText <> "" Then
                Result = Result & " " & ScaleText
            End If

        End If

    Next i

    ConvertLargeNumber = Result

End Function


' ==========================================
' Convert 0 - 999
' ==========================================

Private Function ThreeDigitFa(ByVal NumberText As String) As String

    Dim N As Long
    Dim Hundreds As Long
    Dim Tens As Long
    Dim Ones As Long
    Dim Result As String

    N = Val(NumberText)

    If N = 0 Then
        ThreeDigitFa = ""
        Exit Function
    End If

    Hundreds = N \ 100
    Tens = (N Mod 100) \ 10
    Ones = N Mod 10

    ' Hundreds
    If Hundreds > 0 Then
        Result = GetHundredFa(Hundreds)
    End If

    ' ۱ - ۱۹
    If (N Mod 100) >= 1 And (N Mod 100) <= 19 Then

        If Result <> "" Then
            Result = Result & " " & F_And() & " "
        End If

        Result = Result & GetTeenFa(N Mod 100)

    Else

        ' Tens
        If Tens > 0 Then

            If Result <> "" Then
                Result = Result & " " & F_And() & " "
            End If

            Result = Result & GetTensFa(Tens)

        End If

        ' Ones
        If Ones > 0 Then

            If Result <> "" Then
                Result = Result & " " & F_And() & " "
            End If

            Result = Result & GetDigitFa(CStr(Ones))

        End If

    End If

    ThreeDigitFa = Result

End Function


' ==========================================
' Hundreds
' ==========================================

Private Function GetHundredFa(ByVal N As Long) As String

    Select Case N

        Case 1
            GetHundredFa = F_OneHundred()

        Case 2
            GetHundredFa = F_TwoHundred()

        Case 3
            GetHundredFa = F_ThreeHundred()

        Case 4
            GetHundredFa = F_FourHundred()

        Case 5
            GetHundredFa = F_FiveHundred()

        Case 6
            GetHundredFa = F_SixHundred()

        Case 7
            GetHundredFa = F_SevenHundred()

        Case 8
            GetHundredFa = F_EightHundred()

        Case 9
            GetHundredFa = F_NineHundred()

    End Select

End Function


' ==========================================
' Numbers 1 - 19
' ==========================================

Private Function GetTeenFa(ByVal N As Long) As String

    Select Case N

        Case 1
            GetTeenFa = F_One()

        Case 2
            GetTeenFa = F_Two()

        Case 3
            GetTeenFa = F_Three()

        Case 4
            GetTeenFa = F_Four()

        Case 5
            GetTeenFa = F_Five()

        Case 6
            GetTeenFa = F_Six()

        Case 7
            GetTeenFa = F_Seven()

        Case 8
            GetTeenFa = F_Eight()

        Case 9
            GetTeenFa = F_Nine()

        Case 10
            GetTeenFa = F_Ten()

        Case 11
            GetTeenFa = F_Eleven()

        Case 12
            GetTeenFa = F_Twelve()

        Case 13
            GetTeenFa = F_Thirteen()

        Case 14
            GetTeenFa = F_Fourteen()

        Case 15
            GetTeenFa = F_Fifteen()

        Case 16
            GetTeenFa = F_Sixteen()

        Case 17
            GetTeenFa = F_Seventeen()

        Case 18
            GetTeenFa = F_Eighteen()

        Case 19
            GetTeenFa = F_Nineteen()

    End Select

End Function


' ==========================================
' Tens
' ==========================================

Private Function GetTensFa(ByVal N As Long) As String

    Select Case N

        Case 2
            GetTensFa = F_Twenty()

        Case 3
            GetTensFa = F_Thirty()

        Case 4
            GetTensFa = F_Forty()

        Case 5
            GetTensFa = F_Fifty()

        Case 6
            GetTensFa = F_Sixty()

        Case 7
            GetTensFa = F_Seventy()

        Case 8
            GetTensFa = F_Eighty()

        Case 9
            GetTensFa = F_Ninety()

    End Select

End Function


' ==========================================
' Single digit
' ==========================================

Private Function GetDigitFa(ByVal Digit As String) As String

    Select Case Val(Digit)

        Case 0
            GetDigitFa = F_Zero()

        Case 1
            GetDigitFa = F_One()

        Case 2
            GetDigitFa = F_Two()

        Case 3
            GetDigitFa = F_Three()

        Case 4
            GetDigitFa = F_Four()

        Case 5
            GetDigitFa = F_Five()

        Case 6
            GetDigitFa = F_Six()

        Case 7
            GetDigitFa = F_Seven()

        Case 8
            GetDigitFa = F_Eight()

        Case 9
            GetDigitFa = F_Nine()

    End Select

End Function


' ==========================================
' Scale names
' ==========================================

Private Function GetScaleFa(ByVal GroupNumber As Long) As String

    Select Case GroupNumber

        Case 1
            GetScaleFa = ""

        Case 2
            GetScaleFa = F_Thousand()

        Case 3
            GetScaleFa = F_Million()

        Case 4
            GetScaleFa = F_Billion()

        Case 5
            GetScaleFa = F_Trillion()

        Case 6
            GetScaleFa = F_Quadrillion()

        Case 7
            GetScaleFa = F_Quintillion()

        Case 8
            GetScaleFa = F_Sextillion()

        Case 9
            GetScaleFa = F_Septillion()

        Case 10
            GetScaleFa = F_Octillion()

        Case Else
            GetScaleFa = ""

    End Select

End Function


' ==========================================
' Persian words using ChrW()
' No Persian characters are used in source code
' ==========================================

Private Function F_Zero()
    F_Zero = ChrW(1589) & ChrW(1601) & ChrW(1585)
End Function

Private Function F_One()
    F_One = ChrW(1740) & ChrW(1705)
End Function

Private Function F_Two()
    F_Two = ChrW(1583) & ChrW(1608)
End Function

Private Function F_Three()
    F_Three = ChrW(1587) & ChrW(1607)
End Function

Private Function F_Four()
    F_Four = ChrW(1670) & ChrW(1607) & ChrW(1575) & ChrW(1585)
End Function

Private Function F_Five()
    F_Five = ChrW(1662) & ChrW(1606) & ChrW(1580)
End Function

Private Function F_Six()
    F_Six = ChrW(1588) & ChrW(1588)
End Function

Private Function F_Seven()
    F_Seven = ChrW(1607) & ChrW(1601) & ChrW(1578)
End Function

Private Function F_Eight()
    F_Eight = ChrW(1607) & ChrW(1588) & ChrW(1578)
End Function

Private Function F_Nine()
    F_Nine = ChrW(1606) & ChrW(1607)
End Function

Private Function F_Ten()
    F_Ten = ChrW(1583) & ChrW(1607)
End Function

Private Function F_Eleven()
    F_Eleven = ChrW(1740) & ChrW(1575) & ChrW(1586) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Twelve()
    F_Twelve = ChrW(1583) & ChrW(1608) & ChrW(1575) & ChrW(1586) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Thirteen()
    F_Thirteen = ChrW(1587) & ChrW(1740) & ChrW(1586) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Fourteen()
    F_Fourteen = ChrW(1670) & ChrW(1607) & ChrW(1575) & ChrW(1585) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Fifteen()
    F_Fifteen = ChrW(1662) & ChrW(1575) & ChrW(1606) & ChrW(1586) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Sixteen()
    F_Sixteen = ChrW(1588) & ChrW(1575) & ChrW(1606) & ChrW(1586) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Seventeen()
    F_Seventeen = ChrW(1607) & ChrW(1601) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Eighteen()
    F_Eighteen = ChrW(1607) & ChrW(1580) & ChrW(1583) & ChrW(1607)
End Function

Private Function F_Nineteen()
    F_Nineteen = ChrW(1606) & ChrW(1608) & ChrW(1586) & ChrW(1583) & ChrW(1607)
End Function


' ==========================================
' Tens
' ==========================================

Private Function F_Twenty()
    F_Twenty = ChrW(1576) & ChrW(1740) & ChrW(1587) & ChrW(1578)
End Function

Private Function F_Thirty()
    F_Thirty = ChrW(1587) & ChrW(1740)
End Function

Private Function F_Forty()
    F_Forty = ChrW(1670) & ChrW(1607) & ChrW(1604)
End Function

Private Function F_Fifty()
    F_Fifty = ChrW(1662) & ChrW(1606) & ChrW(1580) & ChrW(1575) & ChrW(1607)
End Function

Private Function F_Sixty()
    F_Sixty = ChrW(1588) & ChrW(1589) & ChrW(1578)
End Function

Private Function F_Seventy()
    F_Seventy = ChrW(1607) & ChrW(1601) & ChrW(1578) & ChrW(1575) & ChrW(1583)
End Function

Private Function F_Eighty()
    F_Eighty = ChrW(1607) & ChrW(1588) & ChrW(1578) & ChrW(1575) & ChrW(1583)
End Function

Private Function F_Ninety()
    F_Ninety = ChrW(1606) & ChrW(1608) & ChrW(1583)
End Function


' ==========================================
' Hundreds
' ==========================================

Private Function F_OneHundred()
    F_OneHundred = ChrW(1589) & ChrW(1583)
End Function

Private Function F_TwoHundred()
    F_TwoHundred = ChrW(1583) & ChrW(1608) & ChrW(1740) & ChrW(1587) & ChrW(1578)
End Function

Private Function F_ThreeHundred()
    F_ThreeHundred = ChrW(1587) & ChrW(1740) & ChrW(1589) & ChrW(1583)
End Function

Private Function F_FourHundred()
    F_FourHundred = ChrW(1670) & ChrW(1607) & ChrW(1575) & ChrW(1585) & " " & ChrW(1589) & ChrW(1583)
End Function

Private Function F_FiveHundred()
    F_FiveHundred = ChrW(1662) & ChrW(1575) & ChrW(1606) & ChrW(1589) & ChrW(1583)
End Function

Private Function F_SixHundred()
    F_SixHundred = ChrW(1588) & ChrW(1588) & ChrW(1589) & ChrW(1583)
End Function

Private Function F_SevenHundred()
    F_SevenHundred = ChrW(1607) & ChrW(1601) & ChrW(1578) & ChrW(1589) & ChrW(1583)
End Function

Private Function F_EightHundred()
    F_EightHundred = ChrW(1607) & ChrW(1588) & ChrW(1578) & ChrW(1589) & ChrW(1583)
End Function

Private Function F_NineHundred()
    F_NineHundred = ChrW(1606) & ChrW(1607) & ChrW(1589) & ChrW(1583)
End Function


' ==========================================
' Common words
' ==========================================

Private Function F_And()
    F_And = ChrW(1608)
End Function

Private Function F_Thousand()
    F_Thousand = ChrW(1607) & ChrW(1586) & ChrW(1575) & ChrW(1585)
End Function

Private Function F_Million()
    F_Million = ChrW(1605) & ChrW(1740) & ChrW(1604) & ChrW(1740) & ChrW(1608) & ChrW(1606)
End Function

Private Function F_Billion()
    F_Billion = ChrW(1605) & ChrW(1740) & ChrW(1604) & ChrW(1740) & ChrW(1575) & ChrW(1585) & ChrW(1583)
End Function

Private Function F_Trillion()
    F_Trillion = ChrW(1578) & ChrW(1585) & ChrW(1740) & ChrW(1604) & ChrW(1740) & ChrW(1608) & ChrW(1606)
End Function

Private Function F_Quadrillion()
    F_Quadrillion = ChrW(1705) & ChrW(1575) & ChrW(1583) & ChrW(1585) & ChrW(1740) & ChrW(1604) & ChrW(1740) & ChrW(1608) & ChrW(1606)
End Function

Private Function F_Quintillion()
    F_Quintillion = ChrW(1705) & ChrW(1608) & ChrW(1575) & ChrW(1606) & ChrW(1578) & ChrW(1740) & ChrW(1604) & ChrW(1740) & ChrW(1608) & ChrW(1606)
End Function

Private Function F_Sextillion()
    F_Sextillion = ChrW(1587) & ChrW(1705) & ChrW(1587) & ChrW(1578) & ChrW(1740) & ChrW(1604) & ChrW(1740) & ChrW(1608) & ChrW(1606)
End Function

Private Function F_Septillion()
    F_Septillion = ChrW(1587) & ChrW(1662) & ChrW(1578) & ChrW(1740) & ChrW(1604) & ChrW(1740) & ChrW(1608) & ChrW(1606)
End Function

Private Function F_Octillion()
    F_Octillion = ChrW(1575) & ChrW(1705) & ChrW(1578) & ChrW(1575) & ChrW(1604) & ChrW(1740) & ChrW(1608) & ChrW(1606)
End Function

Private Function F_Negative()
    F_Negative = ChrW(1605) & ChrW(1606) & ChrW(1601) & ChrW(1740)
End Function

Private Function F_Decimal()
    F_Decimal = ChrW(1575) & ChrW(1593) & ChrW(1588) & ChrW(1575) & ChrW(1585) & ChrW(1740)
End Function

استفاده از تابع در سلول اکسل

برای استفاده از تابع مثل سایر تابع‌های اکسل کافی است در سلول مورد نظر علامت مساوی را بنویسید و نام تابع خود (در این مثال NumToWords یا NumberToWordsFa) را وارد و سلول مورد نظر را انتخاب کنید یا مکان آن را بنویسید و کلید enter را بزنید.

استفاده از فرمول برای تبدیل عدد به حروف در اکسل و نمایش روش تبدیل مقادیر عددی به متن نوشتاری با استفاده از فرمول‌های کاربردی

تبدیل عدد به حروف در اکسل با ابزار یا افزونه

افزونه Number to Words for Excel در Microsoaft Market place یک راهکار جامع برای تبدیل آسان و سریع داده‌های عددی به معادل نوشتاری آن‌ها در محیط اکسل است.

این افزونه با تمرکز بر دقت، سرعت و سهولت استفاده، فرایند کار با اطلاعات عددی را در صفحات گسترده ساده‌تر می‌کند.

با استفاده از این افزونه نیازی به نوشتن کدهای پیچیده VBA ندارید. اما این افزونه دو محدودیت اصلی دارد. برای استفاده از تمام امکانات این افزونه باید نسخه اشتراکی آن را تهیه کنید.

آموزش تبدیل مبلغ عددی به حروف در اکسل برای استفاده از مقادیر مالی به شکل نوشتاری در فاکتورها، رسیدها و فایل‌های مالی

به‌علاوه این افزونه از زبان فارسی پشتیبانی نمی‌کند. ویژگی‌های این افزونه را در ادامه توضیح می‌دهیم:

  • تبدیل اعداد به حروف: اعداد را به‌راحتی به حروف انگلیسی تبدیل کنید تا اطلاعات موجود در اسناد واضح‌تر و خواناتر باشند.
  • پشتیبانی از اعداد ۱ تا ۱۰۰ و بیشتر: از اعداد ۱ تا ۱۰۰ و حتی مقادیر بالاتر، می‌توانید طیف گسترده‌ای از اعداد را تنها با چند کلیک به معادل نوشتاری آن‌ها تبدیل کنید.
  • یکپارچگی با اکسل: افزونه به‌صورت یکپارچه در اکسل ادغام می‌شود و بدون نیاز به تنظیمات پیچیده، تجربه کاربری روانی را در اختیار شما قرار می‌دهد.
  • افزایش بهره‌وری: با حذف فرایندهای دستی تبدیل اعداد، روند کار خود را سریع‌تر کنید و در زمان و انرژی صرفه‌جویی کنید.
  • دسترسی به کد: امکان مشاهده کدهای به‌کاررفته در افزونه وجود دارد؛ بنابراین کاربران می‌توانند در صورت نیاز، آن را بررسی و متناسب با نیازهای خود شخصی‌سازی کنند.
  • ساده‌تر شدن چاپ چک: با تبدیل مبلغ عددی به حروف، نوشتن چک را آسان‌تر کنید و مبلغ موردنظر را به شکلی واضح و مطابق با استانداردهای بانکی نمایش دهید.
  • بهبود خوانایی کاربرگ‌ها: با نمایش داده‌های عددی به شکل متنی و واضح، خوانایی و درک اطلاعات موجود در صفحات اکسل را افزایش دهید.
  • راهنمایی تخصصی: با استفاده از راهنمای جامع ارائه‌شده، می‌توانید نحوه تبدیل اعداد به حروف در اکسل را یاد بگیرید و از تمام قابلیت‌های افزونه به بهترین شکل استفاده کنید.

برای باز کردن این فایل در اکسل مراحل زیر را انجام دهید:

  • فایل افزونه Number to Words for Excel را دانلود کنید.
  • Excel را باز کنید و از منوی File وارد Options شوید.
  • از بخش Add-ins، در پایین پنجره گزینه Excel Add-ins را انتخاب کنید و روی Go بزنید.
  • گزینه Browse را انتخاب کنید. فایل افزونه با پسوند .xlam را پیدا و انتخاب کنید. اگر نام افزونه در فهرست ظاهر شد، تیک آن را فعال کنید و OK بزنید.

برای استفاده از تابع در اکسل، فرمول زیر را وارد کنید:

Prompt
=NUMWORD 
نوشتن فرمول در اکسل برای تبدیل عدد به حروف و استفاده از فرمول مناسب جهت نمایش مقدار عددی به صورت متن نوشتاری

تبدیل مبلغ به حروف در اکسل

برای تبدیل اعداد به حروف همراه با واحد پول، می‌توانید از یک تابع سفارشی VBA استفاده کنید. تابع AmountToWords این امکان را فراهم می‌کند که واحد پول و واحدهای آن را مشخص کنید؛ بنابراین می‌توان از آن در کاربردهای مختلف مالی استفاده کرد.

تبدیل مبلغ به حروف در اکسل برای نمایش اعداد مالی به صورت نوشتاری و استفاده از مبالغ حروفی در فاکتورها، گزارش‌ها و اسناد مالی

تبدیل مبلغ به حروف انگلیسی:

Prompt
' Function to Convert Number to Words with Currency & Units
Function AmountToWords(ByVal MyNumber, ByVal strCurrency As String, ByVal strUnits As String) As String
    Dim IntegerPart As String, DecimalPart As String
    Dim DecimalPlace As Integer

    ' Check if the input is empty or not a number
    If IsEmpty(MyNumber) Or Not IsNumeric(MyNumber) Then
        AmountToWords = ""
        Exit Function
    End If
    
    ' Convert MyNumber to string and trim white space
    MyNumber = Trim(Str(MyNumber))
    
    ' Find position of decimal place (0 if none)
    DecimalPlace = InStr(MyNumber, ".")
    
    ' Get Integer and Decimal Parts
    If DecimalPlace > 0 Then
        IntegerPart = Trim(Left(MyNumber, DecimalPlace - 1))
        DecimalPart = Right(MyNumber, Len(MyNumber) - DecimalPlace)
    Else
        IntegerPart = MyNumber
        DecimalPart = ""
    End If
    
    ' Convert to words
    If IntegerPart <> "" Then
        AmountToWords = NumToWords(IntegerPart) & " " & strCurrency
    End If
    
    If DecimalPart <> "" And Val(DecimalPart) > 0 Then
        If AmountToWords <> "" Then AmountToWords = AmountToWords & " and "
        AmountToWords = AmountToWords & NumToWords(Left(DecimalPart & "00", 2)) & " " & strUnits
    End If
End Function

'****Make sure to have all the functions defined in the NumToWords function in the above section****

برای استفاده از تابع در سلول موردنظر بعد از علامت مساوی فرمول زیر را وارد کنید و enter را بزنید:

Prompt
=AmountToWords(A1,"Dollars","Cents")

برای تغییر واحد پول کافی است واحد مورد نظر را در تابع وارد کنیم. برای مثال به‌جای “Dollars” کلمه “Pounds” را بنویسید.

تبدیل عدد به حروف در اکسل با استفاده از ابزار یا افزونه و معرفی روش‌های جایگزین برای تبدیل مقادیر عددی به متن در Excel

تبدیل عدد به حروف فارسی با واحد پول

فرمول زیر به شما کمک می‌کند اعداد فارسی را همراه واحد پول به فارسی تبدیل کنید:

Prompt
vb
Option Explicit

' ============================================================
' Persian Amount To Words
'
' Example:
' =AmountToWords(A1)
' =AmountToWords(A1, PersianRial(), PersianDinar())
'
' No Persian characters are stored directly in this VBA code.
' Persian text is generated using Unicode character codes.
' ============================================================


' ------------------------------------------------------------
' Main Function
' ------------------------------------------------------------
Public Function AmountToWords( _
    ByVal MyNumber As Variant, _
    Optional ByVal CurrencyName As String = "", _
    Optional ByVal DecimalName As String = "" _
) As String

    Dim NumberText As String
    Dim IntegerPart As String
    Dim DecimalPart As String
    Dim DecimalPos As Long
    Dim Result As String
    Dim IsNegative As Boolean

    ' Validate input
    If IsEmpty(MyNumber) Then
        AmountToWords = ""
        Exit Function
    End If

    If Not IsNumeric(MyNumber) Then
        AmountToWords = ""
        Exit Function
    End If

    ' Check negative number
    IsNegative = (CDbl(MyNumber) < 0)

    ' Convert number to text
    NumberText = Trim$(CStr(Abs(CDbl(MyNumber))))

    ' Normalize decimal separator
    NumberText = Replace(NumberText, ",", ".")

    ' Find decimal separator
    DecimalPos = InStr(1, NumberText, ".", vbBinaryCompare)

    If DecimalPos > 0 Then

        IntegerPart = Left$(NumberText, DecimalPos - 1)
        DecimalPart = Mid$(NumberText, DecimalPos + 1)

    Else

        IntegerPart = NumberText
        DecimalPart = ""

    End If

    ' Remove leading zeros
    IntegerPart = RemoveLeadingZeros(IntegerPart)

    If IntegerPart = "" Then
        IntegerPart = "0"
    End If

    ' Convert integer part
    Result = PersianNumberToWords(IntegerPart)

    ' Add negative sign
    If IsNegative Then
        Result = PersianNegativeWord() & " " & Result
    End If

    ' Add currency
    If CurrencyName <> "" Then
        Result = Result & " " & CurrencyName
    End If

    ' Convert decimal part
    If DecimalPart <> "" Then

        ' Keep two decimal digits
        DecimalPart = Left$(DecimalPart & "00", 2)

        ' Remove leading zeros only for evaluation
        If Val(DecimalPart) > 0 Then

            If Result <> "" Then
                Result = Result & " " & PersianAnd()
            End If

            Result = Result & _
                     PersianNumberToWords(CStr(Val(DecimalPart)))

            If DecimalName <> "" Then
                Result = Result & " " & DecimalName
            End If

        End If

    End If

    AmountToWords = Result

End Function


' ------------------------------------------------------------
' Convert full number to Persian words
' Supports up to 999,999,999,999,999
' ------------------------------------------------------------
Private Function PersianNumberToWords( _
    ByVal NumberText As String _
) As String

    Dim Groups(0 To 4) As String
    Dim Scales(0 To 4) As String

    Dim GroupIndex As Long
    Dim I As Long
    Dim GroupValue As Long
    Dim Result As String
    Dim GroupWords As String

    ' Persian scale names
    Scales(0) = ""
    Scales(1) = PersianThousand()
    Scales(2) = PersianMillion()
    Scales(3) = PersianBillion()
    Scales(4) = PersianTrillion()

    ' Handle zero
    If Val(NumberText) = 0 Then
        PersianNumberToWords = PersianZero()
        Exit Function
    End If

    ' Split number into groups of three digits
    GroupIndex = 0

    Do While Len(NumberText) > 0 And GroupIndex <= 4

        If Len(NumberText) > 3 Then

            Groups(GroupIndex) = _
                Right$(NumberText, 3)

            NumberText = _
                Left$(NumberText, Len(NumberText) - 3)

        Else

            Groups(GroupIndex) = NumberText
            NumberText = ""

        End If

        GroupIndex = GroupIndex + 1

    Loop

    ' Build result from highest group to lowest
    For I = 4 To 0 Step -1

        If Val(Groups(I)) > 0 Then

            GroupValue = Val(Groups(I))

            GroupWords = _
                ThreeDigitToPersian(GroupValue)

            If Result <> "" Then
                Result = Result & " " & PersianAnd()
            End If

            Result = Result & GroupWords

            If I > 0 Then
                Result = Result & " " & Scales(I)
            End If

        End If

    Next I

    PersianNumberToWords = Result

End Function


' ------------------------------------------------------------
' Convert numbers from 1 to 999
' ------------------------------------------------------------
Private Function ThreeDigitToPersian( _
    ByVal NumberValue As Long _
) As String

    Dim Units(0 To 19) As String
    Dim Tens(0 To 9) As String
    Dim Hundreds(0 To 9) As String

    Dim H As Long
    Dim R As Long
    Dim T As Long
    Dim U As Long

    Dim Result As String

    ' Units 1-19
    Units(0) = ""
    Units(1) = P("06CC") & P("06A9")
    Units(2) = P("062F") & P("0648")
    Units(3) = P("0633") & P("0647")
    Units(4) = P("0686") & P("0647") & P("0627") & P("0631")
    Units(5) = P("067E") & P("0646") & P("062C")
    Units(6) = P("0634") & P("0634")
    Units(7) = P("0647") & P("0641") & P("062A")
    Units(8) = P("0647") & P("0634") & P("062A")
    Units(9) = P("0646") & P("0647")
    Units(10) = P("062F") & P("0647")
    Units(11) = P("06CC") & P("0627") & P("0632") & P("062F") & P("0647")
    Units(12) = P("062F") & P("0648") & P("0627") & P("0632") & P("062F") & P("0647")
    Units(13) = P("0633") & P("06CC") & P("0632") & P("062F") & P("0647")
    Units(14) = P("0686") & P("0647") & P("0627") & P("0631") & P("062F") & P("0647")
    Units(15) = P("067E") & P("0627") & P("0646") & P("0632") & P("062F") & P("0647")
    Units(16) = P("0634") & P("0627") & P("0646") & P("0632") & P("062F") & P("0647")
    Units(17) = P("0647") & P("0641") & P("062F") & P("0647")
    Units(18) = P("0647") & P("062C") & P("062F") & P("0647")
    Units(19) = P("0646") & P("0648") & P("0632") & P("062F") & P("0647")

    ' Tens
    Tens(0) = ""
    Tens(1) = ""
    Tens(2) = P("0628") & P("06CC") & P("0633") & P("062A")
    Tens(3) = P("0633") & P("06CC")
    Tens(4) = P("0686") & P("0647") & P("0644")
    Tens(5) = P("067E") & P("0646") & P("062C") & P("0627") & P("0647")
    Tens(6) = P("0634") & P("0635") & P("062A")
    Tens(7) = P("0647") & P("0641") & P("062A") & P("0627") & P("062F")
    Tens(8) = P("0647") & P("0634") & P("062A") & P("0627") & P("062F")
    Tens(9) = P("0646") & P("0648") & P("062F")

    ' Hundreds
    Hundreds(0) = ""
    Hundreds(1) = P("0635") & P("062F")
    Hundreds(2) = P("062F") & P("0648") & P("06CC") & P("0633") & P("062A")
    Hundreds(3) = P("0633") & P("06CC") & P("0635") & P("062F")
    Hundreds(4) = P("0686") & P("0647") & P("0627") & P("0631") & P("0635") & P("062F")
    Hundreds(5) = P("067E") & P("0627") & P("0646") & P("0635") & P("062F")
    Hundreds(6) = P("0634") & P("0634") & P("0635") & P("062F")
    Hundreds(7) = P("0647") & P("0641") & P("062A") & P("0635") & P("062F")
    Hundreds(8) = P("0647") & P("0634") & P("062A") & P("0635") & P("062F")
    Hundreds(9) = P("0646") & P("0647") & P("0635") & P("062F")

    ' Split number
    H = NumberValue \ 100
    R = NumberValue Mod 100

    ' Hundreds
    If H > 0 Then
        Result = Hundreds(H)
    End If

    ' ۱-۱۹
    If R > 0 And R < 20 Then

        If Result <> "" Then
            Result = Result & " " & PersianAnd()
        End If

        Result = Result & Units(R)

    ' ۲۰-۹۹
    ElseIf R >= 20 Then

        T = R \ 10
        U = R Mod 10

        If Result <> "" Then
            Result = Result & " " & PersianAnd()
        End If

        Result = Result & Tens(T)

        If U > 0 Then
            Result = Result & " " & PersianAnd()
            Result = Result & Units(U)
        End If

    End If

    ThreeDigitToPersian = Result

End Function


' ------------------------------------------------------------
' Unicode character builder
'
' Example:
' P("06CC") = Persian Yeh
' ------------------------------------------------------------
Private Function P(ByVal HexCode As String) As String

    P = ChrW(CLng("&H" & HexCode))

End Function


' ------------------------------------------------------------
' Persian fixed words
' ------------------------------------------------------------

Private Function PersianAnd() As String
    PersianAnd = P("0648")
End Function

Private Function PersianZero() As String
    PersianZero = P("0635") & P("0641") & P("0631")
End Function

Private Function PersianThousand() As String
    PersianThousand = _
        P("0647") & P("0632") & P("0627") & _
        P("0631")
End Function

Private Function PersianMillion() As String
    PersianMillion = _
        P("0645") & P("06CC") & P("0644") & _
        P("06CC") & P("0648") & P("0646")
End Function

Private Function PersianBillion() As String
    PersianBillion = _
        P("0645") & P("06CC") & P("0644") & _
        P("06CC") & P("0627") & P("0631") & _
        P("062F")
End Function

Private Function PersianTrillion() As String
    PersianTrillion = _
        P("062A") & P("0631") & P("06CC") & _
        P("0644") & P("06CC") & P("0648") & _
        P("0646")
End Function

Private Function PersianNegativeWord() As String
    PersianNegativeWord = _
        P("0645") & P("0646") & P("0641") & P("06CC")
End Function


' ------------------------------------------------------------
' Persian Currency Names
' ------------------------------------------------------------

Public Function PersianRial() As String

    PersianRial = _
        P("0631") & P("06CC") & P("0627") & P("0644")

End Function


Public Function PersianToman() As String

    PersianToman = _
        P("062A") & P("0648") & P("0645") & P("0627") & P("0646")

End Function


Public Function PersianDinar() As String

    PersianDinar = _
        P("062F") & P("06CC") & P("0646") & P("0627") & P("0631")

End Function


' ------------------------------------------------------------
' Remove leading zeros
' ------------------------------------------------------------
Private Function RemoveLeadingZeros( _
    ByVal TextValue As String _
) As String

    Do While Len(TextValue) > 1 _
        And Left$(TextValue, 1) = "0"

        TextValue = Mid$(TextValue, 2)

    Loop

    If TextValue = "" Then
        TextValue = "0"
    End If

    RemoveLeadingZeros = TextValue

End Function

برای وارد کردن فرمول در سلول‌ها از توابع زیر استفاده کنید.

Prompt
=AmountToWords(A1;PersianRial();"")
Prompt
=AmountToWords(A1;PersianToman();"")
کارگاه داستان‌سرایی داده
علی سعیدی علی سعیدی
علوم داده

کارگاه داستان‌سرایی داده

(کمتر از ۵ رای) ۱۵ نفر نامشخص
بیشتر

مسیر یادگیری تحلیل داده با آکادمی همراه اول

یادگیری تحلیل داده یکی از مسیرهای مناسب برای افرادی است که می‌خواهند مهارت‌های خود را در حوزه فناوری و کسب‌وکار توسعه دهند. تحلیل داده به افراد کمک می‌کند اطلاعات خام را بررسی و تفسیر و از نتایج به‌دست‌آمده برای تصمیم‌گیری بهتر استفاده کنند. برای ورود به این حوزه، آشنایی با مفاهیمی مانند جمع‌آوری و پاک‌سازی داده، تحلیل اطلاعات، مصورسازی و گزارش‌گیری اهمیت زیادی دارد.

آکادمی همراه اول می‌تواند نقطه شروع مناسبی برای افرادی باشد که قصد دارند مسیر یادگیری تحلیل داده را به‌صورت مرحله‌ای دنبال کنند.

بهتر است یادگیری را از مفاهیم پایه مثل مبانی علوم داده، آمار و ریاضیات آغاز کرده و سپس به سراغ ابزارهای کاربردی مانند Tableau ،Microsoaft Power BI و ابزارهای مصورسازی داده بروید. در مراحل پیشرفته‌تر نیز آشنایی با زبان‌هایی مانند پایتون، کتابخانه‌های مرتبط با تحلیل داده، یادگیری ماشین و یادگیری عمیق می‌تواند مهارت‌های شما را تقویت کند.

یکی از نکات مهم در یادگیری تحلیل داده، تمرین مداوم و انجام پروژه‌های واقعی است. صرفا مطالعه مفاهیم تئوری برای ورود به بازار کار کافی نیست. باید بتوانید داده‌های واقعی را تحلیل کرده و نتایج را به شکل قابل‌فهم ارائه دهید. با انتخاب یک مسیر آموزشی منظم و تمرین مستمر، می‌توانید به‌تدریج مهارت‌های لازم برای فعالیت حرفه‌ای در حوزه تحلیل داده را کسب کنید.

نکات مهم در تبدیل عدد به حروف در اکسل

برای اینکه در تبدیل اعداد به حروف در Excel به نتایجی دقیق و حرفه‌ای دست پیدا کنید، رعایت چند نکته ساده می‌تواند بسیار مفید باشد. این نکات به بهبود قالب‌بندی، جلوگیری از خطا و مدیریت آسان‌تر فایل‌های Excel، به‌ویژه برای فاکتورها، گزارش‌ها و اسناد مالی، کمک می‌کنند.

نکات مهم در تبدیل عدد به حروف در اکسل برای جلوگیری از خطا و نمایش صحیح اعداد و مبالغ به صورت حروف در فایل‌های Excel
  • وقتی لازم است اعداد را در قالب مبلغ و به‌صورت حروف برای فاکتورها، چک‌ها یا اسناد پرداخت ثبت کنید، تابع SpellNumber بسیار کاربردی است. این روش با افزودن جزئیات مربوط به واحد پول، قالبی یکدست و منظم برای مبلغ تبدیل‌شده ایجاد می‌کند.
  • پیش از تبدیل اعداد، در صورت نیاز اعداد اعشاری را گرد کنید تا مبلغ نوشته‌شده با نتیجه نهایی محاسبات مطابقت داشته باشد. این کار از بروز خطا در داده‌های مالی که شامل اعشار یا مبالغی مانند سنت هستند، جلوگیری می‌کند.
  • مقادیر عددی اصلی را در یک ستون جداگانه نگه دارید و در صورت نیاز آن ستون را مخفی کنید تا ظاهر جدول مرتب‌تر و حرفه‌ای‌تر باشد. به این ترتیب، داده‌های اصلی همچنان حفظ و فقط متن تبدیل‌شده در جدول نمایش داده می‌شود. در صورت نیاز می‌توانید برای بررسی تفاوت میان مقادیر، از روش‌های مغایرت‌گیری در اکسل استفاده کنید
  • فرمول تبدیل عدد به حروف در Excel را همیشه با مقادیر مختلف، از جمله اعداد بزرگ و اعداد اعشاری، آزمایش کنید. این کار کمک می‌کند مطمئن شوید تبدیل اعداد برای هزاران، میلیون‌ها و مبالغ پیچیده نیز به‌درستی انجام می‌شود.
  • از نام‌های مشخص و قابل فهم برای ستون‌ها استفاده کنید. برای مثال «مبلغ»، «مبلغ به حروف» و «مقدار تبدیل‌شده». نام‌گذاری صحیح باعث می‌شود بررسی و ممیزی فایل‌های Excel آسان‌تر شود و کاربران بتوانند نتایج تبدیل‌شده را سریع‌تر با مقادیر اصلی مقایسه و تایید کنند.

مشکلات رایج هنگام تبدیل عدد به حروف

برای تبدیل عدد به حروف در اکسل ممکن است با مشکلات زیر روبرو شوید.

  • VBA یک سیستم کدنویسی قدیمی است و یونی‌کد است که از زبان فارسی پشتیبانی نمی‌کند. برای اینکه بتوانید فرمول‌های شخصی با این زبان بنویسید باید از تابع ChrW استفاده کنید.
  • نوشتن فرمول‌ها پیچیده است و به دانش بیشتری نسبت به استفاده از فرمول‌های آماده خود اکسل دارد.
  • هر یک از این فرمول‌ها از واحدهای پولی محدودی پشتیبانی می‌کند و برای استفاده در موارد مختلف نیاز به ویرایش دارد.
  • این فرایند برای رقم‌های کوچک بدون مشکل انجام ی‌شود. اما با افزایش تعداد رقم‌ها، ساختار عدد پیچیده‌تر می‌شود و احتمال بروز خطا نیز افزایش پیدا می‌کند. پشتیبانی از اعداد بزرگ، اعداد منفی و اعشاری، رعایت درست قواعد زبان فارسی، نمایش صحیح صفرها و قرارگرفتن کلمات در ترتیب مناسب از مهم‌ترین چالش‌های این فرایند هستند.

نتیجه‌گیری

تبدیل عدد به حروف در اکسل یکی از قابلیت‌های کاربردی برای افرادی است که با اطلاعات مالی، فاکتورها، قراردادها و اسناد مختلف سروکار دارند. اگرچه اکسل به‌صورت پیش‌فرض تابع مستقیمی برای تبدیل اعداد به حروف فارسی ندارد، اما با استفاده از روش‌هایی مانند کدنویسی VBA، افزونه‌ها و فرمول‌های سفارشی می‌توان این کار را به‌سادگی انجام داد.

انتخاب روش مناسب به نیاز شما و میزان شخصی‌سازی موردنظر بستگی دارد. برای استفاده‌های حرفه‌ای و مداوم، VBA منعطف‌تر است. این درحالی‌که افزونه‌ها و فرمول‌های آماده برای کاربرانی که به دنبال راهکاری سریع و ساده هستند، گزینه‌های مناسبی محسوب می‌شوند.

با انتخاب روش درست و توجه به نحوه واردکردن و قالب‌بندی اعداد، می‌توانید فرایند تبدیل مبالغ و اعداد به حروف را در اکسل سریع‌تر و دقیق‌تر انجام دهید.

مبانی مهندسی داده
احمد حاجی تراب احمد حاجی تراب
علوم داده

مبانی مهندسی داده

۴,۰ (۱۰۴ رای) ۳۶۹ نفر ۲۳۷ ساعت و ۲۰ دقیقه
بیشتر

پرسش‌های متداول (FAQ)

در این بخش از مطلب به تعدادی از سوالات متداپل در مرود نحوه تبدیل عدد به حروف در اکسل پاسخ می‌دهیم. 

چگونه مبلغ را در اکسل به حروف تبدیل کنیم؟

برای تبدیل مبلغ به حروف در اکسل، می‌توانید از کد VBA، افزونه‌های آماده یا توابع سفارشی استفاده کنید. اکسل به‌صورت پیش‌فرض تابعی برای تبدیل مستقیم اعداد به حروف فارسی ندارد. یکی از روش‌های رایج، استفاده از یک تابع VBA است که پس از اضافه‌شدن به فایل، مبلغ عددی را به عبارت فارسی تبدیل می‌کند. این روش برای تهیه فاکتور، رسید، چک و اسناد مالی کاربرد زیادی دارد.

 آیا تبدیل عدد به حروف در اکسل بدون VBA امکان‌پذیر است؟

بله، امکان تبدیل عدد به حروف در اکسل بدون VBA وجود دارد، اما اکسل به‌صورت پیش‌فرض تابع مستقیمی برای این کار ارائه نمی‌کند. می‌توانید از فرمول‌های ترکیبی، توابع سفارشی، افزونه‌های آماده یا ابزارهای آنلاین استفاده کنید. با این حال، برای تبدیل اعداد به حروف فارسی، استفاده از افزونه یا فرمول آماده ساده‌تر است. در حالی که VBA امکان شخصی‌سازی بیشتری برای تبدیل مبالغ و اعداد مختلف فراهم می‌کند.

چرا تابع تبدیل عدد به حروف در اکسل کار نمی‌کند؟

اگر تابع تبدیل عدد به حروف در اکسل کار نمی‌کند، ممکن است کد یا افزونه مربوط به آن به‌درستی فعال نشده باشد، فرمول با نسخه اکسل سازگار نباشد یا عدد ورودی به‌صورت متن ذخیره شده باشد. همچنین در روش‌های مبتنی بر VBA، غیرفعال بودن Macroها یا ذخیره‌نکردن فایل با فرمت مناسب مانند .xlsm می‌تواند باعث اجرا نشدن تابع شود. در صورت استفاده از فرمول‌های آماده نیز باید ساختار فرمول، زبان و قالب داده‌های ورودی را بررسی کنید.

منابع:

دیدگاهتان را بنویسید

برای ثبت دیدگاه، تأیید امنیتی را انجام دهید.

Picture of مرضیه پیمان

مرضیه پیمان

من در حوزه هوش مصنوعی و فناوری‌های نوین، محتوای آموزشی و تخصصی برای وبلاگ آکادمی همراه اول تولید می‌کنم. تلاش می‌کنم مفاهیم پیچیده را با زبانی ساده، دقیق و کاربردی ارائه دهم تا یادگیری برای همه آسان‌تر شود.

مطالب مرتبط