2008/7/25 Brian Barker <[EMAIL PROTECTED]>:

> At 13:18 20/07/2008 +0200, Guy Voets wrote:
>
>> I have a problem with 'conditional sum' (as it was called in Excel). I
>> believe it's SUM.IF in OOo. I'm spoiled by the way Excel led me through the
>> motions, and don't quite succeed in doing the same in OOo.
>>
>> The idea is that when in the sheet 'journaal' two conditions are met in a
>> range of cells in columns C and D, the amounts in the corresponding cells in
>> column H will be summed in the result cell in another (second) sheet This is
>> how OOo translated the formula made in the Excel sheet
>>
>> =SOM(ALS($journaal.$C$2:$C$179="nau";ALS($journaal.$D$2:$D$179="zek";$journaal.$H$2:$H$179;0);0))
>> (SOM.ALS is dutch for SUM.IF)
>>
>> I don't find an easy way to produce such formula in OOo. One condition
>> (C="nau") is OK with Insert>Function, but do I have to add the second
>> condition (D="zek") manually?
>> This is what I get:
>> =SOM.ALS(journaal.C2:C179;"sec";journaal.G2:G173)
>>
>
> First, a few observations:
> o  I'm puzzled by your reference to "SUM.IF" - with a dot.  The function is
> called "SUMIF" in the English version, not "SUM.IF".  I don't know about the
> Dutch implementation, of course.


Yes, in Dutch it's SOM.ALS, there's also AANTAL.ALS (NUMBERIF ?)
=SOM.ALS(A1:A10;"<0") sums negative values in the A1:A10 array


> o  You say your problem is with SUMIF, but your example (translated from
> Excel) does not use this function.  Instead, it uses a nested arrangements
> of the different - and separate - functions "SUM" and "IF".


indeed, nested SUM and IF, but I thought SUMIF could do the job (it  seemed
to do it, with a single condition, as in the second formula I quoted)

>
> o  This example doesn't work as given.  It is an array function, so it
> needs to be entered with Ctrl+Shift+Enter instead of simple Enter, whereupon
> it automatically grows braces: {=SUM( ... 0))}.  Then it works.  But you
> probably knew that.
>
> I don't think you can easily use the SUMIF function to achieve what you
> need, in fact, since it is designed to examine a single array for the
> condition, and you have two arrays and two conditions.  The reason you
> cannot add a second condition is that SUMIF does not need or allow one.  But
> you can create a formula like your example (using SUM and IF):
> o  In the Function Wizard, select SUM and Next>>.
> o  Next to "number 1", press the "fx" button, and then select IF and
> Next>>.
> o  For Test, drag and type to create: $journaal.$C$2:$C$179="nau" .
> o  Before creating the Then_value, enter 0 for Otherwise_value. (You can go
> back later if you forget this.)
> o  Next to Then_value, press the "fx" button, and then select IF and
> Next>>.
> o  For Test, drag and type to create: $journaal.$D$2:$D$179="zek" .
> o  For Then_value, drag to create: $journaal.$H$2:$H$179 .
> o  For Otherwise_value, enter: 0 .
> o  Crucially, tick the Array box at the bottom left.
> o  Press OK.  Bingo!
> (Perhaps you could do this, too.)


I'll try it out at home, where I have the Calc file in question.

>
>
> I think the only way to use SUMIF directly is if you first somehow condense
> the two conditions into one.  You could do this easily by concatenating the
> test arrays in a new column, perhaps on your second sheet.  Put
>     =$journaal.$C$2&$journaal.$D$2
> into A2, say, and then fill that down column A.  Where both your conditions
> are satisfied, this new cell will contain "nauzek".  (You can hide this
> column if you prefer.)  Then you can replace your formula with
>     =SUMIF($A$2:$A$179;"nauzek";$journaal.$H$2:$H$179) .


This might work, since there's a limited and known series of conditions
(sections of an organisation in the first array, types of income or expense
in the second - I put them into two columns because the second series occurs
in different sections)

>
>
> Even that doesn't quite work, since the "nauzek" could have been created by
> concatenating vales of "na" and "uzek" instead of "nau" and "zek".  To avoid
> this problem, interpolate an extra character, e.g. a space, between the two
> values.  Thus A2 becomes
>     =$journaal.$C$2&" "&$journaal.$D$2
> and the test formula
>     =SUMIF($A$2:$A$179;"nau zek";$journaal.$H$2:$H$179) .
>
> I trust this helps.


I'm sure it will, as usual.
Many thanks!

>
>
> Brian Barker
>

-- 
Guy

Reply via email to