Solved

Excel Numbers: Million Round to Thousand; Hundreds to decimals; 0 show as -

Posted on 2010-11-22
17
1,226 Views
Last Modified: 2012-05-10
I want to use the excel custom formating to show the following numbers

1,500,000  show as 1,500 note: no decimals
-1,500,000 show as (1,500) note: no decimals
150,000 show as 150 note: no decimals
-150,000 show as (150) note: no decimals
150  show as .15 note: two decimals
-150 shos as (.15) note: two decimals
0 show as "-" note: without quotation and no decimals

I would like to combine all these options under the custom formating of excel. Don't want to use formula like round function.
0
Comment
Question by:Pachecda
17 Comments
 
LVL 23

Expert Comment

by:Michael74
ID: 34191526
As far as I am aware this cannot be done with formatting. I think you will have to use a formula or even a macro.
0
 
LVL 5

Expert Comment

by:Zopilote
ID: 34191549
0
 

Author Comment

by:Pachecda
ID: 34191631
I was hoping to use the operators like [<=> 1000], #,##, in the custom formating portion, but I guess is not doable. I use nvision to create financials and I really cannot use formula or even a macro since they populate automatically with little user intervention.
0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 

Author Comment

by:Pachecda
ID: 34191678
Hi Zopilote:

I look at your suggestion, but it does not exactly answers what I want in my description above.
0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34191876
Why not use this custom format?
#,##0.00, ;(#,##0.00,);0;
0
 
LVL 37

Accepted Solution

by:
TommySzalapski earned 500 total points
ID: 34191893
Sorry. I meant
#,##0.#, ;(#,##0.#,);-;
Didn't read your post too well.
0
 
LVL 37

Assisted Solution

by:TommySzalapski
TommySzalapski earned 500 total points
ID: 34191908
Or this to dodge the leading 0s and allow up to three decimal places
#,###.###, ;(#,###.###,);-;
0
 

Author Comment

by:Pachecda
ID: 34192084
Hi Tommy;

I like your idea, but is there a way to pefect it even further. After pluggin #,##0.#, ;(#,##0.#,);-; as my custom format, I got:

Tommy             Optimal
864.3                     864
    2.                           2
    0.1                      0.1
If you can get my optimal to work, would be great. I only care about the decimal when is between 0 an 1000. Greater than that will round to thousand


0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34192136
What version of Excel do you have?
0
 
LVL 37

Assisted Solution

by:TommySzalapski
TommySzalapski earned 500 total points
ID: 34192165
If you have 2007 you can use conditional formatting. Select the entire sheet and set a rule
formula =abs(A1)>=1000 then set the number format to #,###, ;(#,###,);-;
And the other case would just use the original format.
0
 

Author Comment

by:Pachecda
ID: 34192180
Sorry Tommy, I have version 2003.
0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34192208
If you have 2000/2003 you could do it in VBA, but I doubt you want to add macros just for that.
0
 
LVL 37

Assisted Solution

by:TommySzalapski
TommySzalapski earned 500 total points
ID: 34192350
One other option would be
[>1000]#,###,;[<-1000]-#,###,;#,###.###,
This will display the numbers as you want, but will show negatives with - instead of () and 0 as . not -
This is as close as you can get in 2003 without macros.
0
 

Author Comment

by:Pachecda
ID: 34192977
Hi Tommy:

I was trying to move away from a macro, but I can have that macro run when the spreadsheet is open to see if we can get to the desire results. All of your options you presented were good and I like them, but they were not just the one I was looking for. However, thanks for the try. Do you think you can try VBA code.

Thanks.
0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34193018
This code would do it for the whole sheet
Dim r As Range

For Each r In Sheets("Sheet2").UsedRange
  If IsNumeric(r.Value) Then
    If Abs(r.Value) < 1000 Then
      r.NumberFormat = "#,###.###, ;(#,###.###,);-;"
    Else
      r.NumberFormat = "#,###, ;(#,###,);text;"
    End If
  Else
    r.NumberFormat = "General"
  End If
Next

Open in new window

0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34193027
Run that once and then add this code to the worksheet so it doesn't look at the whole thing every time.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range

For Each r In Target
  If IsNumeric(r.Value) Then
    If Abs(r.Value) < 1000 Then
      r.NumberFormat = "#,###.###, ;(#,###.###,);-;"
    Else
      r.NumberFormat = "#,###, ;(#,###,);text;"
    End If
  Else
    r.NumberFormat = "General"
  End If
Next
End Sub

Open in new window

0
 

Author Comment

by:Pachecda
ID: 34193067
Tommy you are the best, you have done. Thanks much
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Approximate matching with VLOOKUP and MATCH seems to me to be a greatly under-used technique, and one which is vital for getting good performance out of large lookups. Until recently I would always have advised using an exact match for simplicity an…
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question