× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Here's what I see in Excel's help:

IF(logical_test, value_if_true, value_if_false)

In your sample, you have this:

=IF(AG37=0,"00%",AG28-K28-M28-E28-G28)/AG37

Let's break that down into what Excel will do:

a) If AG37=0, then put "00%" into some temporary location.

b) If AG37<>0, then run the formula AG28-K28-M28-E28-G28, and
store the result in the temporary location.

c) Divide the temporary location (from a or b) by the contents of AG37. (Your /AG37 is outside of the parenthesis for the IF statement, so it'll do this division either way!)

So if AG37=0, it'll come up with "%00"/0 which is obviously invalid, because you can never divide anything by zero.

You state the following:

The above formula works fine, except if AG37 is 0, Then I get a #div error.

Makes perfect sense. You can't divide anything by zero (not even a character string!) without getting a division error.

You then suggest the following as a replacement:

=IF(AG37=0,"00%",(AG28-K28-M28-E28-G28)/AG37

This one stuns me, because I don't understand the logic you went through to come up with that fix. "00%" happens when AG37 is zero -- in other words, it happens when you have the problem you're trying to solve. Yet, you didn't do anything to that part of the code when you tried to solve the problem! Instead you changed the part of the equasion that was WORKING, by adding a parenthesis before it.

Ironically, it solved the problem. Not because of the extra parenthesis, but because you forgot the CLOSING parenthesis. Notice that your equasion has two opening parenthesis (one after IF, one at the start of your "false" condition). But only one closing parenthesis (just before the division).

Excel tries to help you when you make a mistake like that. Since the parenthesis aren't balanced, it adds an additional closing parenthesis onto the end.

The actual formula is, therefore, the following one:

=IF(AG37=0,"00%",(AG28-K28-M28-E28-G28)/AG37)

Notice that this (by luck) happens to move the division into the false condition. It's no longer outside the parenthesis, it's now only run when AG37 is not zero, thanks to Excel tacking on that extra closing parenthesis.

It changed the meaning of the equasion, but by some stroke of luck, it ended up being what you intended it to be from the beginning! That the division is only done when AG37 isn't zero.

Anyway... change your RPG code to add that extra parenthesis at the end, and you should be good to go:

formulastr = 'IF('+drtot_c + '=0,"00%", '+
%trim(sbtot_c) + '-' +
%trim(gaprt_k) + '-' +
%trim(gaprt_m) + '-' +
%trim(cpirt_e) + '-' +
%trim(cpirt_g) + ')' + '/' +
%trim(drtot_c) + ')';

Good luck

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.