wdprice3 BinaryBuffonary 45912 Posts user info edit post |
I have a column of cells calculating Net soil cut/fill that displays the net value and if it's cut/fill:
Col A Col B Col C Cut Fill =ABS(A1-B1)&IF(A1>B1," (Cut)", " (Fill)") 1,500 200 1,300 (Cut)
However, I can't get column C to show commas and I can't figure out a custom cell format to do so. Any ideas? Needs to be formatted as I'm showing without using extra columns.
[Edited on May 4, 2012 at 11:53 AM. Reason : .]5/4/2012 11:53:26 AM |
qntmfred retired 40810 Posts user info edit post |
=TEXT(ABS(A1-B1),"_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)")&IF(A1>B1," (Cut)", " (Fill)") 5/4/2012 11:57:38 AM |
Tarun almost 11687 Posts user info edit post |
woah 5/4/2012 12:02:19 PM |
wdprice3 BinaryBuffonary 45912 Posts user info edit post |
doesn't that turn the cell to text? need it to be a value for further calculations. guess I should have said that.
thanks for your help
[Edited on May 4, 2012 at 12:03 PM. Reason : .] 5/4/2012 12:03:15 PM |
qntmfred retired 40810 Posts user info edit post |
you're going to do a calculation on a cell with a value of "1,300 (Cut)"? why don't you put =ABS(A1-B1) in column C and then do your concatenation with the cut/fill text in column D 5/4/2012 12:05:55 PM |
wdprice3 BinaryBuffonary 45912 Posts user info edit post |
that's how I would do it to make it simple, but not my sheet and not my rules, etc. I was hoping there was a way to do this in one cell and still have it calculate. 5/4/2012 12:09:19 PM |
Tarun almost 11687 Posts user info edit post |
could you recalculate the value or convert to number before your next calc?
[Edited on May 4, 2012 at 12:33 PM. Reason : ...] 5/4/2012 12:30:33 PM |
J33Pownr Veteran 356 Posts user info edit post |
You got something weird going on with your excel file if it will not show commas. I can do what you want by formatting the cell, going to number and then checking the Use 1000 Separator (,). If you do that what happens? Nothing? 5/4/2012 2:12:03 PM |
BIGcementpon Status Name 11319 Posts user info edit post |
I've never had a custom cell format work the way I wanted it to. 5/4/2012 2:12:38 PM |
kimslackey All American 7841 Posts user info edit post |
i'm confused... can't you just format cell, go to number and check box "Use 1000 Seperator (,)"?
wait, i see the problem... yeah, that's probably not gonna happen
[Edited on May 4, 2012 at 3:23 PM. Reason : ] 5/4/2012 3:22:41 PM |
HaLo All American 14273 Posts user info edit post |
It can happen. I just did something similar with a date instead of a number. When I get back to my laptop I'll show how to make it happen (later tonight) 5/4/2012 7:07:08 PM |
J33Pownr Veteran 356 Posts user info edit post |
Oh wow I totally did not read what you wrote. If you havent figured it out by now try this out....
=IF(C5>D5,ABS(C5-D5)&" CUT",ABS(C5-D5)&" FILL")
Did I redeem myself?
[Edited on May 7, 2012 at 7:36 AM. Reason : Oo] 5/7/2012 7:35:15 AM |
Shadowrunner All American 18332 Posts user info edit post |
When you concatenate the (Cut) or (Fill) to the end of the value, Excel converts the ABS(A1-B1) to text, so the entire formula result is now a string. Knowing that it will become a string, you need to add the commas in yourself in the formula using something like
=IF(ABS(A1-B1) >= 1000, FLOOR(ABS(A1-B1)/1000, 1)&","&MOD(ABS(A1-B1), 1000), ABS(A1-B1))&IF(A1>B1," (Cut)", " (Fill)")
That function isn't quite right, since it will fail if the difference is something like 1,050. It won't zero-pad the value after the comma, so it would end up returning "1,50 (Cut)". But if you can fix that so it inserts the zero(s) when needed, you'll be all set.
However, this still leaves the problem of calculating with the value later when the cell result is a string. If you only need to do this a few times, it's not too bad of a hassle to extract a number from this, but it's kind of an unwieldy expression to be throwing around if you need it in lots of places.
=VALUE(SUBSTITUTE(LEFT(C1, FIND(" ", C1)), ",", ""))
That expression uses LEFT to isolate the number before the (Cut) or (Fill) designation, strips the comma, then converts the result from text to number. So any time you need to calculate on that cell, you'll have to use that to extract the number.
Pain in the ass, but if those are the rules you're given to work with...
[Edited on May 7, 2012 at 3:42 PM. Reason : zero-pad issue] 5/7/2012 3:25:48 PM |
Shadowrunner All American 18332 Posts user info edit post |
This solves the zero-pad issue, assuming the values in Col A and Col B are integers. If you have any decimals, it'll be trickier to deal with rounding, etc.
IF(LEN(MOD(ABS(A1-B1), 1000))<3, RIGHT("00"&MOD(ABS(A1-B1), 1000), 3), MOD(ABS(A1-B1), 1000))
So then the full expression for Col C becomes
=IF(ABS(A1-B1) >= 1000, FLOOR(ABS(A1-B1)/1000, 1)&","&IF(LEN(MOD(ABS(A1-B1), 1000))<3, RIGHT("00"&MOD(ABS(A1-B1), 1000), 3), MOD(ABS(A1-B1), 1000)), ABS(A1-B1))&IF(A1>B1," (Cut)", " (Fill)") 5/7/2012 3:53:34 PM |