July 23, 2026
·
Updated Sep 4, 2026
·
4 min read
·automation

SpellRupees: spelling Indian currency in Excel, in every workbook

Excel has no function for the Indian numbering system, so the usual fix is pasting a macro into every workbook. An add-in solves it once instead.

Table of Contents
Share

Write a cheque, prepare a voucher, or raise a bill in India and you need the amount twice: once in figures, once in words. Excel will happily format the figures. For the words, it offers nothing at all — and certainly nothing that knows what a lakh is.

SpellRupees adds that missing function, and adds it once for the whole machine rather than once per file.

Why Excel cannot already do this

Excel has no built-in function to convert a number to words in any language. There is no SPELLNUMBER. Microsoft's own guidance is to paste a VBA macro into your workbook.

For Indian usage the gap is wider, because the grouping is different. Western formatting runs in thousands: thousand, million, billion. The Indian system groups differently after the first thousand — thousand, lakh, crore — so 1,500,000 is not "one point five million" but fifteen lakhs. Any generic number-to-words routine gets this wrong, because it is counting in the wrong groups.

So the workaround everybody lands on is pasting a macro into the workbook. Which works, and then:

  • The file has to be saved as .xlsm, and macro-enabled files get blocked or stripped in transit.
  • The next workbook needs its own copy, so the macro spreads by copy-paste.
  • When you find a bug in it, you have twenty divergent copies to fix.
  • Anyone you send the file to gets a macro warning, and learns to click past macro warnings.

How it works

SpellRupees is packaged as an Excel add-in — an .xlam file — rather than as a macro living inside a workbook. Excel loads add-ins at startup, so the function is available in every workbook you open, including ones created before you installed it.

The usage is a formula:

=SpellRupees(A1)

And the output follows the Indian system, including paise:

InputOutput
1500000Fifteen Lakhs Rupees Only
10000000One Crore Rupees Only
75250.50Seventy Five Thousand Two Hundred Fifty Rupees and Fifty Paise Only
0Zero Rupees Only

The trailing "Only" is not decoration — it is the convention on Indian cheques and vouchers, there to stop anyone appending digits after the written amount.

Because it is a formula rather than a one-off conversion, the words update when the figure changes. Correct a voucher amount and the words follow, which is exactly the mismatch that manual typing produces.

Installing it

The one-click route:

  1. Download install_addin.bat from the latest release.
  2. Double-click it.
  3. Open, or restart, Excel. =SpellRupees() is ready.

What the installer actually does, since running a batch file on trust is a fair thing to hesitate over:

  • Downloads SubhoSpellRupees.xlam from the repository.
  • Places it in %APPDATA%\Microsoft\AddIns\, the standard per-user add-ins folder.
  • Registers it so Excel loads it automatically at startup.
  • Requires no admin rights — everything happens inside your own user profile.

That last point is why the batch file exists. On a managed office machine you often cannot install software, but you can write to your own %APPDATA%. The installer works within that boundary rather than asking for elevation.

Limitations worth knowing

  • Desktop Excel on Windows only. .xlam add-ins do not load in Excel for the web or on mobile, and the registry step is Windows-specific.
  • Installed per user, not per machine. Another Windows account on the same PC needs its own install. That is a consequence of avoiding admin rights, and the right trade for most people.
  • Recipients need it too. Send a workbook using the formula to someone without the add-in and they see #NAME?. Paste the result as text if the file is going outside your machine.
  • Rupees specifically. The output is denominated in rupees and paise, with the wording conventions to match. It is not a general number-to-words function.

Worth it for one formula?

The function is small. The annoyance it removes is not, because it recurs — every cheque, every voucher, every bill, for as long as you do the job. Fixing it once at machine level rather than once per workbook is the whole idea.

SpellRupees on GitHub · Project page

S

Subho

Automation Engineer · Self-Taught Technologist

Self-taught technologist building practical tools for automation, infrastructure, and real-world problem solving. Based in India.