Just for the information of people who are not aware of Indian Style of comma separation, I have produced table below which explains Indian style formatting for various numbers. The basic rule is that first comma separation happens at 3 digits i.e. 1000 then it happens after every 2 digits. Check out table below for better understanding.
Number | Formatted As |
10 | 10.00 |
100 | 100.00 |
1000 | 1,000.00 |
10000 | 10,000.00 |
100000 | 1,00,000.00 |
1000000 | 10,00,000.00 |
10000000 | 1,00,00,000.00 |
100000000 | 10,00,00,000.00 |
1000000000 | 1,00,00,00,000.00 |
10000000000 | 10,00,00,00,000.00 |
100000000000 | 1,00,00,00,00,000.00 |
Soon I realised that there is no single custom format available for handling all kind of number length and we need separate format for it depending upon the number of digits. Doing this manually and accuratly every time is very difficult. This leaves only one option to automate this through a macro. I got a Macro code for doing this and modified and tested that for long numbers.

I am sharing the macro code with you. You will need to select the numbers and run macro to format them as per India style comma sepration.
|
For easy application of this code you need to save it as a excel addin or add it to your personal macro book. Adding a custom toolbar for this code will make it easy to apply. You can chage the number of decimal places by changing the number of zeros at the end of custom number format given above.
You can cut your routine in half. Change the For-Each to
ReplyDeleteFor Each c In Selection.Cells
and remove everything from If to Else, plus End If.
Big data is a term that describes the large volume of data – both structured and unstructured – that inundates a business on a day-to-day basis. big data projects for students But it’s not the amount of data that’s important.Project Center in Chennai
DeleteSpring Framework has already made serious inroads as an integrated technology stack for building user-facing applications. Corporate TRaining Spring Framework the authors explore the idea of using Java in Big Data platforms.
Spring Training in Chennai
The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training
Hello Jon - Thanks for your inputs, I am updating the post above.
ReplyDeleteFor Positive Numbers
ReplyDeleteSub Ind_Num_Fmt()
For Each Cellval In Selection
Cellval.NumberFormat = "[>=10000000]##\,##\,##\,##0.00;[>=100000]##\,##\,##0.00;##,##0.00"
Next
End Sub
Sam
Hi Sam
ReplyDeleteThanks for your input. However this can handle only positive numbers upto 100 Millions.
That is why I have said that no single format can handle all kind of number lenght. This is the reason for using case statement to choose different format based on value.
Thanks
You can get rid of that entire Select..Case block and replace it with a single (albeit long) statement...
ReplyDeleteSub IndianNumberFormat()
For Each C In Selection
C.NumberFormat = Trim(Replace(Format(String( _
Len(Int(C.Value)) - 1, "#"), _
" @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0"), _
" \,", "")) & ".00"
Next C
End Sub
The above code should be able to handle up to a 15-digit positive or negative number.
Rick Rothstein (MVP - Excel)
By giving this the '0' zero is displaying as .00 instead of 0.00 or 0
DeletePl look in to this.
By the way, instead of using a manually implemented macro, we can make this functionality automatic by using worksheet event code. Just right click the tab at the bottom of the worksheet that is to have this functionality, select View Code from the popup menu that appears and then copy/paste the following into the code window that appears...
ReplyDeletePrivate Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range
Set R = Range("A:A,C3:E10")
If Not Intersect(Target, R) Is Nothing Then
With Target
.NumberFormat = Trim(Replace(Format(String( _
Len(Int(.Value)) - 1, "#"), _
" @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0"), _
" \,", "")) & ".00"
End With
End If
End Sub
Just change the Range address in the Set statement to cover the range of cells you want to have this functionality. My sample above is set to apply the Indian Number Format to all of Column A plus just the cells in range C3:E10. After entering any number within this range of cells, it will be reformatted into the Indian style for a number.
FANTASTIC AND SUPERB .. I'VE SEARCHED IT FOR A LONG TIME.. A MARVELOUS CODE TO READ
DeleteHello Rick
ReplyDeleteThanks for your inputs. I am really amazed with your single line code to handle Indian Style comma separation for upto 15 digits number.
These are great inputs and have really added value to my post.
Thanks
You are quite welcome... I am glad that you liked my offerings. As for that single line of code solution... well, one-liners are kind of a "thing" with me. Before becoming an Excel MVP, I was a MVP for Visual Basic where I built up a reputation for writing one-liners. Google used to be able to show well over 1000 of them via a simple search (although I think I have written posted several thousand one-liners across the 9/10 years I have been volunteering answering newsgroup questions), but they changed something in their search engine a couple of years ago and now it is hard to find links to them. Anyway, this one-liner contains the same "challenge" for you and your readers that all my past posted ones did... try to figure out how and/or why it works.[grin]
ReplyDeleteRick Rothstein (MVP - Excel)
Hello Rick
ReplyDeleteI like the "challange" and let me explain the alog of your one liner for that let me break your code into various parts as it is doing mutiple line processing in single line due to its length.
1. Most inner part of your one liner is building up string of # based on cell value. If value is 10 it is #. Incase it is 1000 string is ##. It is actually lengh of the int - 1.
2. Formating this sting of # into " @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0" . This builds indian style comma separation number format. However there are some " \," if the length of the int is less than 14.
3. Replacing the " \," with ""
4. Trim the string built after replace as it leaves space in the begining.
5. Finaly adding ".00" for decimal points
Now the entire string is ready as per Indian style comma separation format.
I hope I have understood your code. Let me know if I have missed something.
Regards
This comment has been removed by the author.
ReplyDeleteI'm totally amazed. How could I miss till now that indian punctuation is so different?
ReplyDeleteEven the one liner to replace it is awesome!
Thank you for sharing
http://bit.ly/iUhlP
Hi Augusto
ReplyDeleteThanks for your appreciative comments. This one liner is contributed by Rick Rothstein (MVP - Excel)
Rick is very active on various forums and you can notice his contribution at various places on the net. When ever you serach any VBA help, you may get a code contributed by him.
By this note I want to say Thanks to Rick, he has really added value to this post.
Thanks
Yogesh Gupta
Hi Yogesh,
ReplyDeleteAlthough I said it in one of my earlier messages in this thread, I just wanted to say again that you are quite welcome and that I am glad you found my contribution of value.
Hi,
ReplyDeletefor negative values one liner printed like this -,11,40,773 which needs to be corrected. Also it should retain original decimal values format, color and parenthesis for negative values. Can someone make the changes please.
Thanks
Hi Vijay
ReplyDeleteAs pointed out by you one liner had some issue with the negative numbers. I have corrected this, following code should be able to handle it correctly.
Sub IndianNumberFormat()
For Each C In Selection
C.NumberFormat = Trim(Replace(Format(String( _
Len(Int(Abs(C.Value))) - 1, "#"), _
" @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0"), _
" \,", "")) & ".00"
Next C
End Sub
However I am not sure about rest of the items pointed out by you.
Thanks
Yogesh Gupta
Yogesh,
ReplyDeleteLet's revisit this old thread on formatting numbers in the Indian style. This requestion recently came up in another blog...
-
http://chandoo.org/wp/2010/07/26/indian-currency-format-excel/#comments
-
and I posted basically the same event code I posted here. One of the respondents make an side comment about it working for typed in text as well as formulas. Well, it really doesn't work for formulas, but the comment prodded me to modify the code so it could react to either... a number typed directly into the cells being monitored by the event code or, a formula in that range where the formulas displayed value changes because one of the cells referred to in the formula got changed. Here is that modified event code which I posted over in the other blog...
-
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range, Cell As Range
Set R = Range("C:C")
If Not Intersect(Target, R) Is Nothing Then
With Target
If WorksheetFunction.IsNumber(.Value) Then
.NumberFormat = Trim(Replace(Format(String(Len(Int(Abs(.Value))) - 1, "#"), _
" @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0"), " \,", "")) & ".00"
Else
.NumberFormat = "General"
End If
End With
ElseIf Not Intersect(Target.Dependents, R) Is Nothing Then
For Each Cell In Target.Dependents
If Not Intersect(Cell, R) Is Nothing Then
With Cell
If .Value <> "" Then
If WorksheetFunction.IsNumber(.Value) Then
.NumberFormat = Trim(Replace(Format(String(Len(Int(Abs(.Value))) - 1, "#"), _
" @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0"), " \,", "")) & ".00"
Else
.NumberFormat = "General"
End If
End If
End With
End If
Next
End If
End Sub
-
There is one line of code to maybe watch out for. I don't remember is this blog's comment processor removes "not equal to" symbols (a less than sign followed by a greater than sign. If you do not see a not equal sign in this line...
-
If .Value <> "" Then
-
then here is the line as it should be with a .NE. substituted for the less than/greater than symbols...
-
If .Value .NE. "" Then
very very thank....
ReplyDeleteyou says:-For easy application of this code you need to save it as a excel addin or add it to your personal macro book. Adding a custom toolbar for this code will make it easy to apply. You can chage the number of decimal places by changing the number of zeros at the end of custom number format given above. how i save it as a excel addin and add it to my personal macrobook. kindly reply my id is sidharthsaroha@gmail.com i will be thankful to you for experience sharing
ReplyDeleteis there any contact no. and suitable time for which any quries.
ReplyDeleteThanks for the useful macro.
ReplyDeleteThere is no code available to convert numbers in Devanagari text e.g. 1 = एक, १०=दस.Code is likely to be more complicated for numbers from Twenty one to 99.Moreover vb does not accept Devanagari text written in Unicode.I shows as ?????.
ReplyDeleteHi Yogesh,
ReplyDeleteI have 2000 rows of data. They have with some products names and values. I would like to add comma before any value(number) in the data without typing. Kindly please suggest me how could I do this ?
Hi Yogesh,
ReplyDeleteThanks,It's very use full. But It will not working for negative number.Can you pls guide me..
Following code will take care of negative numbers
DeleteSub IndianNumberFormat()
For Each C In Selection
C.NumberFormat = Trim(Replace(Format(String( _
Len(Int(Abs(C.Value))) - 1, "#"), _
" @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0"), _
" \,", "")) & ".00"
Next C
End Sub
can the negative numbers be shown in bracket (12,23,245) instead of -12,23,345?
Deletehello Yogesh SIR. i am commission agent[artia] of punjab. i am looking for software related to mandi. we ve to purchase the goods from all partyies of mandi and send it to that miller. i am looking for sogtware which maitain inventory party wise and also stock lifted both party wise and that station which that truk is sended. and in the end we ve to make interest of all partyies. but i am not geeting the right i want . please help me.
ReplyDeletehi,
ReplyDeletein excel there is an option to display -ve numbers in brackets. Ex: -5,200.00 will be displayed as (5,200.00). is it possible to insert this feature into the code u have given in the beginning.
otherwise this code was very helpful.
Thank you.
This comment has been removed by the author.
ReplyDeleteone of my official task is to calculate the number of working days between two dates provided, sunday not included, saturday considered as half a day and a set of 15 holidays spread over in a year like new year, pongal, republic day, independence day, gandhi jayanthi, diwali etc. I would be much obliged if you could help me in designing a custom function.
ReplyDeletesuresh
Thanx this code was helpful for me to converting numbers in Indian Format.
ReplyDeleteThank u so much... it absolutely helpful for me
ReplyDeleteAbsolutely amazing..
ReplyDeleteThe easiest way is keep excel close and
ReplyDelete1. Goto the Control panel and select the “Region and Language” button
2. Select from drop down English - India
3. Apply & close.
and then See the magic !!!!!!!!!
Simple solution....Thank you!
DeleteAwesome man.... No need to take out your heart on coding...... simply follow 3 steps and finish....
ReplyDeleteThnx a ton Mr. Imran.
[>=10000000]##\,##\,##\,##0.00;[>=100000] ##\,##\,##0.00;##,##0.00
ReplyDeleteCan someone post the final version of either the macro or the custom number/accounting format? It would be nice if the formatting also included the new rupee currency symbol.
ReplyDeleteDid you ever get a reply to this post? I too am in need of the completed macro with INR symbol.
DeleteUse following code, this would work as per your need.
DeleteSub IndianNumberFormat()
For Each c In Selection
c.NumberFormat = """INR """ & Trim(Replace(format(String( _
Len(Int(c.Value)) - 1, "#"), _
" @@\\,@@\\,@@\\,@@\\,@@\\,@@\\,@@0"), _
" \,", "")) & ".00"
Next c
End Sub
Goto control panel
ReplyDeleteThen goto Region and Language
Then Customise Format
Then Currency
Digit Grouping
Then in Excel Formal Cell, select Numbers & use 1000 Separator
appreciate it
ReplyDeleteThank you so much Sir...
ReplyDeleteThank You so much..
ReplyDeleteThanks for sharing this information with us. The content was helpful to many of the readers.
ReplyDeleteSpoken English Classes in Anna Nagar
Spoken English Classes in Porur
Spoken English Class in Kodambakkam
Spoken English Class in Adyar
Best Spoken English Classes in Chennai
IELTS Coaching Centre in Chennai
Spoken English Classes in Mumbai
English Speaking Course in Mumbai
IELTS Coaching in Mumbai
IELTS Mumbai
need format for this Rs. 100,00,00,000.00
ReplyDeleteI enjoyed reading your article. Thanks for taking the time to post such a valuable article.
ReplyDeleteseo content writing tips
language similar to english
salesforce basics
star certification
hacking books
interview questions on tableau
Aivivu chuyên vé máy bay, tham khảo
ReplyDeleteVé máy bay đi Mỹ
khi nào có vé máy bay từ mỹ về việt nam
ve may bay tư duc ve viet nam
giá vé máy bay từ moscow về hà nội
Great post! I really appreciative you and I like to more unique content about this title and keep updating here...
ReplyDeleteInformatica Training in Bangalore
Informatica Training in Chennai
Informatica MDM Training in Chennai
Informatica Course in Chennai
Good job...! I am really happy to visit your post and thank you for your sharing...
ReplyDeleteReact JS Training in Chennai
Blue Prism Training in Bangalore
Blue Prism Training in Chennai
Blue Prism Online Training
Woderful content. I am regularly follow this blog. Thank you for updating such a good content. Please follow my Travel blog for more information about Eco Park in Kolkata.
ReplyDeleteMy other posts are:
Victoria Memorial in Kolkata.
Scuba Diving in Goa.
Top visiting places in GOA.
Calangute Beach in Goa.
Candolim Beach in Goa.
Baga Beach in Goa.
You should be a piece of a challenge for probably the best website on the web. I will suggest this site!
ReplyDeletetech news
bape
ReplyDeletesupreme clothing
kd13
ggdb
supreme
شركة تنظيف بالرياض
ReplyDeleteThank you for sharing this useful blog. Keep sharing with us.
ReplyDeleteramanichandran novels
muthulakshmi raghavan novels
sashi murali novels
tamil novels
srikala novels
mallika manivannan novels
Ever worry about keeping track of employee time and attendance? Does keeping tabs on random time-off and shift change requests drive you a little crazy? Timeclock 365 is the answer. Work logger app
ReplyDeleteWatch and Download world's famous Turkish action drama Kurulus Osman Season 3 in English on link below
ReplyDelete👇
Kurulus Osman Season 3
Kurulus Osman Season 3 Episode 1
On link below
Kurulus Osman Season 3 Episode 1
Crypto trading course
Join on link below
Crypto quantum leap
YouTube course
Be a professional YouTuber and start your carrier
Tube Mastery and Monetization by matt
Best product for tooth pain ,
Cavity ,
Tooth decay ,
And other oral issues
Need of every home
With discount
And digistore money back guarantee
Steel Bite Pro
What is something you learned in the last week?# BOOST Your GOOGLE RANKING.It’s Your Time To Be On #1st Page Our Motive is not just to create links but to get them indexed as will Increase Domain Authority (DA).We’re on a mission to increase DA PA of your domain High Quality Backlink Building Service Boost DA upto 15+ at cheapest Boost DA upto 25+ at cheapest Boost DA upto 35+ at cheapest Boost DA upto 45+ at cheapest
ReplyDeleteSuch a valuable blog with required data. Gratitude for sharing this astounding site.
ReplyDeletehttps://www.echobookmarks.win/visit-this-site-23
Players can win by creating horizontal, vertical, or 메리트카지노 diagonal strains or overlaying the entire card. A slot machine is a random number generator that rewards gamers when symbols match in a line. Casino gamers select {how many|what number of} strains they want to play and how a lot to wager. They have the very best odds of winning when they wager the max wager and max strains. As you likely seen above, welcome bonuses range in value and may or could not embrace wagering requirements.
ReplyDelete