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 दिख रहा है या नहीं। अगर नहीं दिख रहा, तो इन स्टेप्स को फॉलो करें:
- Excel के File मेनू पर क्लिक करें और Options में जाएं।
- Customize Ribbon पर क्लिक करें।
- Right side वाली लिस्ट में Developer बॉक्स पर टिक (check) करें और OK कर दें।
Step 2: VBA Editor ओपन करें
अब हमें Excel के पीछे काम करने वाले इंजन (VBA Editor) को खोलना होगा जहाँ हम अपना जादुई कोड पेस्ट करेंगे।
- अपने कीबोर्ड पर
ALT + F11बटन एक साथ दबाएं। - एक नई विंडो खुलेगी जिसका नाम Microsoft Visual Basic for Applications होगा।
Step 3: नया Module Insert करें
कोड लिखने के लिए हमें एक खाली पन्ने (Module) की ज़रूरत है।
- VBA विंडो के मेनू बार में Insert पर क्लिक करें।
- Module सेलेक्ट करें।
- अब आपके सामने एक सफ़ेद रंग की खाली स्क्रीन आ जाएगी।
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 का इस्तेमाल कैसे करें?
अब आपका जादुई फॉर्मूला तैयार है!
- किसी भी सेल में कोई नंबर लिखें (जैसे:
1250.50). - दूसरे सेल में यह फॉर्मूला लगाएं:
=SpellNumberEnglish(A1)(जहाँ A1 वह सेल है जिसमें आपका नंबर लिखा है) - 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.
