Home / Number to words in Excel
Number to words in Excel — a formula you can paste.
Two ways to spell numbers inside a spreadsheet: a modern LAMBDA that needs no macros, or the classic SpellNumber VBA function. Pick the one your Excel supports.
Option 1 — LAMBDA (Excel 365 / 2021, no macros)
Go to Formulas → Name Manager → New, name it SpellNumber, and paste this in "Refers to". Then use =SpellNumber(A1) in any cell.
=LAMBDA(num,
LET(
n, INT(num),
ones, {"","One","Two","Three","Four","Five","Six","Seven","Eight","Nine",
"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen",
"Seventeen","Eighteen","Nineteen"},
tens, {"","","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"},
under100, LAMBDA(x, IF(x<20, INDEX(ones,x+1),
TRIM(INDEX(tens,INT(x/10)+1)&" "&INDEX(ones,MOD(x,10)+1)))),
under1000, LAMBDA(x, TRIM(
IF(x>=100, INDEX(ones,INT(x/100)+1)&" Hundred ","")&
under100(MOD(x,100)))),
TRIM(
IF(INT(n/10000000)>0, under100(INT(n/10000000))&" Crore ","")&
IF(INT(MOD(n,10000000)/100000)>0, under100(INT(MOD(n,10000000)/100000))&" Lakh ","")&
IF(INT(MOD(n,100000)/1000)>0, under100(INT(MOD(n,100000)/1000))&" Thousand ","")&
under1000(MOD(n,1000))
)
)
)
This is the Indian (lakh/crore) version. For the international million/billion grouping, replace the crore/lakh lines with thousand/million/billion steps — the structure is identical, only the divisors change.
Option 2 — VBA SpellNumber (any desktop Excel)
Press Alt + F11, choose Insert → Module, paste the code, save as a macro-enabled workbook (.xlsm), then use =SpellNumber(A1).
Function SpellNumber(ByVal n As Double) As String
Dim ones As Variant, tens As Variant
ones = Array("", "One", "Two", "Three", "Four", "Five", "Six", _
"Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", _
"Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", _
"Sixty", "Seventy", "Eighty", "Ninety")
Dim num As Long: num = Int(n)
Dim res As String
res = res & SpellGroup(Int(num / 10000000), ones, tens, "Crore ")
num = num Mod 10000000
res = res & SpellGroup(Int(num / 100000), ones, tens, "Lakh ")
num = num Mod 100000
res = res & SpellGroup(Int(num / 1000), ones, tens, "Thousand ")
num = num Mod 1000
res = res & SpellGroup(num, ones, tens, "")
SpellNumber = Application.Trim(res)
End Function
Private Function SpellGroup(ByVal x As Long, ones As Variant, _
tens As Variant, suffix As String) As String
If x = 0 Then Exit Function
Dim s As String
If x >= 100 Then
s = ones(Int(x / 100)) & " Hundred "
x = x Mod 100
End If
If x >= 20 Then
s = s & tens(Int(x / 10)) & " "
x = x Mod 10
End If
If x > 0 Then s = s & ones(x) & " "
SpellGroup = s & suffix
End Function
Google Sheets
Sheets has no LAMBDA Name Manager, so use Apps Script: Extensions → Apps Script, paste a SPELLNUMBER(n) function with the same logic as the VBA above, save, then call =SPELLNUMBER(A1). The full ready-to-paste script is on the Google Sheets page.
Need it for a whole column without a formula? The bulk converter takes a pasted column or CSV and hands back the words — no macros, no setup.