Excel में Amount को Words में Convert कैसे करें? (Rupees + Paise) – Complete Hindi Guide

Excel में अकाउंटिंग या इनवॉइस तैयार करते समय सबसे बड़ी दिक्कत तब आती है जब आपको टोटल अमाउंट को Words में लिखना होता है, जैसे:

1250.75 → Rupees One Thousand Two Hundred Fifty and Seventy Five Paise Only

Excel में SUM, AVERAGE, IF, IFERROR, VLOOKUP, XLOOKUP, INDEX, MATCH जैसे कई फॉर्मूले हैं, लेकिन अफ़सोस की बात यह है कि Numbers को Words में बदलने (जैसे 100 को “One Hundred” में) के लिए कोई इनबिल्ट (built-in) फॉर्मूला नहीं है। हम बात कर रहे है Excel 2021 या इससे पुराने version के बारे में।

लेकिन चिंता न करें! आज के इस ट्यूटोरियल पोस्ट में, मैं आपको एक ऐसी VBA Trick बताऊंगा जिससे आप अपना खुद का फॉर्मूला बना सकते हैं। यह फॉर्मूला आपके नंबर को Rupees and Paise फॉर्मेट में कन्वर्ट कर देगा।

तो चलिए शुरू करते हैं!

Step 1: Developer Tab को Enable करें

सबसे पहले आपको यह सुनिश्चित करना होगा कि आपके Excel में Developer Tab दिख रहा है या नहीं। अगर नहीं दिख रहा, तो इन स्टेप्स को फॉलो करें:

  1. Excel के File मेनू पर क्लिक करें और Options में जाएं।
  2. Customize Ribbon पर क्लिक करें।
  3. Right side वाली लिस्ट में Developer बॉक्स पर टिक (check) करें और OK कर दें।

Step 2: VBA Editor ओपन करें

अब हमें Excel के पीछे काम करने वाले इंजन (VBA Editor) को खोलना होगा जहाँ हम अपना जादुई कोड पेस्ट करेंगे।

  1. अपने कीबोर्ड पर ALT + F11 बटन एक साथ दबाएं।
  2. एक नई विंडो खुलेगी जिसका नाम Microsoft Visual Basic for Applications होगा।

Step 3: नया Module Insert करें

कोड लिखने के लिए हमें एक खाली पन्ने (Module) की ज़रूरत है।

  1. VBA विंडो के मेनू बार में Insert पर क्लिक करें।
  2. Module सेलेक्ट करें।
  3. अब आपके सामने एक सफ़ेद रंग की खाली स्क्रीन आ जाएगी।

Step 4: VBA Code को पेस्ट करें

अब नीचे दिए गए कोड को कॉपी करें और उस खाली Module वाली स्क्रीन पर पेस्ट कर दें। यह कोड विशेष रूप से International Number System (Million/Billion) के साथ Rupees फॉर्मेट के लिए तैयार किया गया है।

Code को यहाँ से कॉपी करें: 👇

Option Explicit

Public Function SpellNumberEnglish(ByVal v)
    Dim s As String
    s = Trim(CStr(v))
    If s = "" Then
        SpellNumberEnglish = ""
        Exit Function
    End If
    
    ' Remove commas and trim
    s = Replace(s, ",", "")
    
    ' If not numeric, return message
    If Not IsNumeric(s) Then
        SpellNumberEnglish = "Not a number"
        Exit Function
    End If
    
    Dim parts() As String
    parts = Split(Format(CDbl(s), "0.00"), ".")
    Dim intPart As String, decPart As String
    intPart = parts(0)
    decPart = parts(1) ' two digits
    
    Dim words As String
    If CLng(intPart) = 0 Then
        words = "Zero"
    Else
        words = ConvertNumberEnglish(intPart)
    End If
    
    SpellNumberEnglish = "Rupees " & Trim(words)
    If CLng(decPart) > 0 Then
        SpellNumberEnglish = SpellNumberEnglish & " and " & ConvertNumberEnglish(decPart) & " Paise"
    End If
    SpellNumberEnglish = SpellNumberEnglish & " Only"
End Function

Private Function ConvertNumberEnglish(ByVal numStr As String) As String
    ' Convert arbitrarily large integer represented as string into words (English)
    ' We'll process in groups of 3 from right (units, thousand, million, billion, trillion, etc.)
    Dim scales As Variant
    scales = Array("", " Thousand", " Million", " Billion", " Trillion", " Quadrillion", " Quintillion", " Sextillion", " Septillion")
    
    Dim n As String
    n = numStr
    Dim result As String
    result = ""
    
    Dim i As Long, grp As Integer
    i = 0
    Do While Len(n) > 0
        Dim take As Integer
        take = 3
        If Len(n) <= 3 Then take = Len(n)
        Dim part As String
        part = Right(n, take)
        n = Left(n, Len(n) - take)
        Dim partVal As Integer
        partVal = CInt(part)
        If partVal <> 0 Then
            result = ConvertHundreds(partVal) & scales(i) & IIf(result = "", "", " ") & result
        End If
        i = i + 1
    Loop
    
    ConvertNumberEnglish = Application.WorksheetFunction.Trim(result)
End Function

Private Function ConvertHundreds(ByVal n As Integer) As String
    Dim Ones As Variant
    Ones = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", _
                 "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
    Dim Tens As Variant
    Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
    
    Dim res As String
    res = ""
    If n = 0 Then
        ConvertHundreds = ""
        Exit Function
    End If
    If n < 20 Then
        res = Ones(n)
    ElseIf n < 100 Then
        res = Tens(Int(n / 10))
        If n Mod 10 > 0 Then res = res & " " & Ones(n Mod 10)
    Else
        res = Ones(Int(n / 100)) & " Hundred"
        If n Mod 100 > 0 Then res = res & " " & ConvertHundreds(n Mod 100)
    End If
    ConvertHundreds = res
End Function

Step 5: VBA विंडो बंद करें और Excel फाइल Save करें

कोड पेस्ट करने के बाद VBA विंडो को बंद कर दें और अपनी Excel शीट पर वापस आ जाएं।

⚠️ ज़रूरी बात: इस फाइल को सेव करते समय Save As Type में Excel Macro-Enabled Workbook (.xlsm) चुनें। अगर आप इसे साधारण Excel File (.xlsx) में सेव करेंगे, तो यह कोड डिलीट हो जाएगा।

Step 6: Formula का इस्तेमाल कैसे करें?

अब आपका जादुई फॉर्मूला तैयार है!

  1. किसी भी सेल में कोई नंबर लिखें (जैसे: 1250.50).
  2. दूसरे सेल में यह फॉर्मूला लगाएं: =SpellNumberEnglish(A1) (जहाँ A1 वह सेल है जिसमें आपका नंबर लिखा है)
  3. Enter दबाएं।

Output ऐसा दिखेगा: Rupees One Thousand Two Hundred Fifty and Fifty Paise Only

निष्कर्ष (Conclusion)

देखा आपने? Excel में कस्टम फ़ंक्शन बनाना कितना आसान है! अब आप अपने Invoices को पूरी तरह से ऑटोमेट कर सकते हैं। यह कोड बहुत बड़े नंबर्स (Billions/Trillions) को भी सपोर्ट करता है।

अगर आपको यह कोड implement करने में कोई दिक्कत आ रही है, तो नीचे कमेंट करके जरूर बताएं।

Happy Excelling!

For more Excel tutorials, keep visiting TheOfficeTutorials.com.


Leave a Comment