1行(列)おきに計算して合計を出す

1行(列)おきに合計する関数です。

奇数行の場合と偶数行の場合で式を作ってます。

関数は「SUMPRODUCT」を使っていきます。

配列なのですが、「配列1」「配列2」と指定すると両列の同行を掛け算し、その結果を合計するというものです。

下図をみてください。




0713_1

A列とC列の値を同行で掛け算してます。
A1×C1=0
A2×C2=2
A3×C3=0
A4×C4=2
A5×C5=0
A6×C6=2

となりますよね、これで出たE列の値を足すと
=0+2+0+2+0+2=6

合計「6」という値が返ります。

このそれぞれの計算をいっぺんにしてくれるのが配列です。

ではこれを踏まえていきましょう。

奇数のセルを合計する関数
=SUMPRODUCT(MOD(ROW(A1:A6),2),A1:A6)

偶数のセルを合計する関数
=SUMPRODUCT(MOD(ROW(A1:A6)-1,2),A1:A6)

となります。
・ROW 行を数える
・MOD 数値を割って余った値を返す

 

奇数の関数で考え方を見てみると、

A1からA6のそれぞれの行を「2」で割ります。すると、
1行目は余り「1」
2行目は余り「0」
3行目は余り「1」
と続きます。

これを元の数値と掛け算します。
「元のA1の値」 × 「MODで割って余った値」
「元のA2の値」 × 「MODで割って余った値」
と続くわけです。
すると「0」で割ったところの値は「0」が返ります。
「0」以外の行は「1」が返りますので、元のA列の値に「1」を掛けても数値は変わりませんよね。
これで最終的に合計すると、「1」を掛けているセルだけを足すことになるので、1行おきの計算となるのです。

MODをCOLUMNに変更すれば1列ごとの計算になりますよ。

便利ですね。