You can spell out numbers in different currencies as well as without currency as per your requirement. We have a list of numbers and various currencies that we’ll spell out.
How to Spell a Number into Words in Excel
- Go to the Developer tab and select Visual Basic to open the Microsoft Visual Basic for Application window.
- Click on the Insert tab and select Module. A code window will appear where you can write VBA code.
- Paste the following code there.
Option Explicit
Function SpellNum(ByVal givenNumber)
Dim usDollars, usCents, Temp
Dim decimalPoint, Count
ReDim Position(9) As String
Position(2) = " Thousand "
Position(3) = " Million "
Position(4) = " Billion "
Position(5) = " Trillion "
givenNumber = Trim(Str(givenNumber))
decimalPoint = InStr(givenNumber, ".")
If decimalPoint > 0 Then
usCents = GetDigit(Left(Mid(givenNumber, decimalPoint + 1) & "00", 1)) _
& " " & GetDigit(Left(Mid(givenNumber, decimalPoint + 2) & "00", 1))
givenNumber = Trim(Left(givenNumber, decimalPoint - 1))
End If
Count = 1
Do While givenNumber <> ""
Temp = GetHundreds(Right(givenNumber, 3))
If Temp <> "" Then
usDollars = Temp & Position(Count) & usDollars
End If
If Len(givenNumber) > 3 Then
givenNumber = Left(givenNumber, Len(givenNumber) - 3)
Else
givenNumber = ""
End If
Count = Count + 1
Loop
Select Case usCents
Case ""
usCents = ""
Case "One"
usCents = " Point One "
Case Else
usCents = " Point " & usCents & " "
End Select
SpellNum = usDollars & usCents
End Function
Function GetHundreds(ByVal givenNumber)
Dim output As String
If Val(givenNumber) = 0 Then
Exit Function
End If
givenNumber = Right("000" & givenNumber, 3)
If Mid(givenNumber, 1, 1) <> "0" Then
output = GetDigit(Mid(givenNumber, 1, 1)) & " Hundred "
End If
If Mid(givenNumber, 2, 1) <> "0" Then
output = output & GetTens(Mid(givenNumber, 2))
Else
output = output & GetDigit(Mid(givenNumber, 3))
End If
GetHundreds = output
End Function
Function GetTens(TensText)
Dim output As String
output = ""
If Val(Left(TensText, 1)) = 1 Then
Select Case Val(TensText)
Case 10
output = "Ten"
Case 11
output = "Eleven"
Case 12
output = "Twelve"
Case 13
output = "Thirteen"
Case 14
output = "Fourteen"
Case 15
output = "Fifteen"
Case 16
output = "Sixteen"
Case 17
output = "Seventeen"
Case 18
output = "Eighteen"
Case 19
output = "Nineteen"
Case Else
End Select
Else
Select Case Val(Left(TensText, 1))
Case 2
output = "Twenty "
Case 3
output = "Thirty "
Case 4
output = "Forty "
Case 5
output = "Fifty "
Case 6
output = "Sixty "
Case 7
output = "Seventy "
Case 8
output = "Eighty "
Case 9
output = "Ninety "
Case Else
End Select
output = output & GetDigit(Right(TensText, 1))
End If
GetTens = output
End Function
Function GetDigit(number)
Select Case Val(number)
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
- Go to your worksheet, type the following formula and press Enter to spell number without currency in Excel.
=SpellNum(B5)
How to Spell a Number into Words for Currency in Excel
Method 1 – Spell Numbers in U.S. Dollars
- Launch the VBA Editor window and insert the following code given below in a module.
Option Explicit
Function SpellNumUSD(ByVal MyNumber)
Dim Dollars, cents, Temp
Dim DecimalPlace, Count
ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
MyNumber = Trim(Str(MyNumber))
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
Select Case Dollars
Case ""
Dollars = "No Dollars"
Case "One"
Dollars = "One Dollar"
Case Else
Dollars = Dollars & " Dollars"
End Select
Select Case cents
Case ""
cents = " and No Cents"
Case "One"
cents = " and One Cent"
Case Else
cents = " and " & cents & " Cents"
End Select
SpellNumUSD = Dollars & cents
End Function
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Functio
MyNumber = Right("000" & MyNumber, 3)
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If
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
Function GetTens(TensText)
Dim Result As String
Result = ""
If Val(Left(TensText, 1)) = 1 Then
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"
Case Else
End Select
Else
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 "
Case Else
End Select
Result = Result & GetDigit(Right(TensText, 1))
End If
GetTens = Result
End Function
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
- Select cell B5 and write the following formula.
=SpellNumUSD(B5)
Method 2 – Spell Number in Taka
- Go to the Microsoft VBA module and type the following formula in the module.
Function ConvertNumberToWords(ByVal num As Double) As String
Dim onesArr() As String
Dim tensArr() As String
Dim groupArr() As String
Dim Result As String
onesArr = Split("One,Two,Three,Four,Five," & _
"Six,Seven,Eight,Nine", ",")
tensArr = Split("Ten,Eleven,Twelve,Thirteen,Fourteen," & _
"Fifteen,Sixteen,Seventeen,Eighteen,Nineteen", ",")
groupArr = Split("Twenty,Thirty,Forty,Fifty," & _
"Sixty,Seventy,Eighty,Ninety", ",")
Dim taka As Long
Dim paisa As Long
taka = Fix(num)
paisa = Round((num - taka) * 100)
If taka = 0 And paisa = 0 Then
Result = "Zero Taka"
Else
If taka > 0 Then
Result = ConvertNumberToWordsHelper(taka) & " Taka"
End If
If paisa > 0 Then
Result = Result & " and " & ConvertNumberToWordsHelper(paisa) _
& " Paisa"
End If
End If
ConvertNumberToWords = Trim(Result)
End Function
Function ConvertNumberToWordsHelper(ByVal num As Long) As String
Dim onesArr() As String
Dim tensArr() As String
Dim groupArr() As String
Dim Result As String
onesArr = Split("One,Two,Three,Four,Five," & _
"Six,Seven,Eight,Nine", ",")
tensArr = Split("Ten,Eleven,Twelve,Thirteen,Fourteen," & _
"Fifteen,Sixteen,Seventeen,Eighteen,Nineteen", ",")
groupArr = Split("Twenty,Thirty,Forty,Fifty," & _
"Sixty,Seventy,Eighty,Ninety", ",")
If num = 0 Then
Result = ""
ElseIf num < 10 Then
Result = onesArr(num - 1)
ElseIf num < 20 Then
Result = tensArr(num - 10)
ElseIf num < 100 Then
If num Mod 10 = 0 Then
Result = groupArr(Int(num / 10) - 2)
Else
Result = groupArr(Int(num / 10) - 2) _
& " " & onesArr(num Mod 10 - 1)
End If
ElseIf num < 1000 Then
Result = onesArr(Int(num / 100) - 1) _
& " Hundred " & ConvertNumberToWordsHelper(num Mod 100)
ElseIf num < 1000000 Then
Result = ConvertNumberToWordsHelper(Int(num / 1000)) _
& " Thousand " & ConvertNumberToWordsHelper(num Mod 1000)
ElseIf num < 10000000 Then
Result = ConvertNumberToWordsHelper(Int(num / 100000)) _
& " Lakh " & ConvertNumberToWordsHelper(num Mod 100000)
ElseIf num < 100000000000# Then
Result = ConvertNumberToWordsHelper(Int(num / 10000000)) _
& " Crore " & ConvertNumberToWordsHelper(num Mod 10000000)
Else
Result = "Number is too large."
End If
ConvertNumberToWordsHelper = Trim(Result)
End Function
- Go to your worksheet and apply the formula given below.
=ConvertNumberToWords(B5)
- Press Enter, and the amount of Taka in cell B5 will be converted into words.
Method 3 – Spell Numbers in Other Currencies
Here’s a custom VBA function that can be used to spell numbers in 11 different currencies:
- Riyal
- Dirham
- Pound
- Euro
- Yen
- Canadian Dollar
- Australian Dollar
- Rand
- Baht
- Sri Lankan Rupee
- US Dollar
Option Explicit
Function SpellNumber(ByVal MyNumber, Optional MyCurrency As String = "")
Dim Dollars, cents, Temp
Dim DecimalPlace, Count
Dim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
MyNumber = Trim(Str(MyNumber))
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
Dim str_amount, str_amounts
Dim str_cent, str_cents
Select Case UCase(MyCurrency)
Case "RIYAL"
str_amount = "Riyal"
str_amounts = "Riyals"
str_cent = "Halala"
str_cents = "Halalas"
Case "DIRHAM"
str_amount = "Dirham"
str_amounts = "Dirhams"
str_cent = "Fil"
str_cents = "Fils"
Case "POUND"
str_amount = "Pound"
str_amounts = "Pounds"
str_cent = "Penny"
str_cents = "Pence"
Case "EURO"
str_amount = "Euro"
str_amounts = "Euros"
str_cent = "Cent"
str_cents = "Cents"
Case "YEN"
str_amount = "Yen"
str_amounts = "Yens"
str_cent = "Sen"
str_cents = "Sens"
Case "CANADIAN DOLLAR"
str_amount = "Canadian Dollar"
str_amounts = "Canadian Dollars"
str_cent = "Cent"
str_cents = "Cents"
Case "AUSTRALIAN DOLLAR"
str_amount = "Australian Dollar"
str_amounts = "Australian Dollars"
str_cent = "Cent"
str_cents = "Cents"
Case "RAND"
str_amount = "Rand"
str_amounts = "Rands"
str_cent = "Cent"
str_cents = "Cents"
Case "BAHT"
str_amount = "Baht"
str_amounts = "Bahts"
str_cent = "Satang"
str_cents = "Satangs"
Case "SRI LANKAN RUPEE"
str_amount = "Sri Lankan Rupee"
str_amounts = "Sri Lankan Rupees"
str_cent = "Cent"
str_cents = "Cents"
Case Else
str_amount = "Dollar"
str_amounts = "Dollars"
str_cent = "Cent"
str_cents = "Cents"
End Select
Select Case Dollars
Case ""
Dollars = "No " & str_amounts
Case "One"
Dollars = "One " & str_amount
Case Else
Dollars = Dollars & " " & str_amounts
End Select
Select Case cents
Case ""
cents = " and No " & str_cents
Case "One"
cents = " and One " & str_cent
Case Else
cents = " and " & cents & " " & str_cents
End Select
SpellNumber = Dollars & cents
End Function
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If
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
Function GetTens(TensText)
Dim Result As String
Result = ""
If Val(Left(TensText, 1)) = 1 Then
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
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
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
- Go to your dataset and select cell D5. Use the following formula to convert the amount of money into words.
=SpellNumber(B5,C5)
Press the Enter button and then autofill the rest of the cells to convert the amount into different currencies in words.
Things to Remember
- Make sure that the Developer tab is enabled. If the tab is not enabled, you can access the Microsoft VBA window by pressing Alt+F11.
- While using the last VBA function, if you insert the currency using the cell reference, make sure to put an inverted comma before the name of the currency, for instance, ‘Riyal.
Download the Practice Workbook
Download this practice workbook while reading this article.
Frequently Asked Questions
Does Excel Have a built-in function to spell number?
Unfortunately, Excel does not have any built-in function to spell number. Although it can easily be done by creating a user defined VBA function.
Can I modify the VBA code to spell out numbers in different languages?
The VBA code shown above in this article can be modified to spell out numbers in different languages. Just replace the English words with the equivalent words in your desired language.
Can I spell out numbers using alternative numbering systems (e.g. Roman numerals) using VBA in Excel?
You can create a user defined function in Excel VBA to spell out numbers using alternative numbering systems such as the Roman numerals. The function will depend on the specific numeric system you are using.
Spell Number in Excel: Knowledge Hub
<< Go Back to Excel Convert Number to Text | Learn Excel
Get FREE Advanced Excel Exercises with Solutions!