Excel。1行おきの数値を合計するには、FILTER関数を使うと便利です。
<SUM+FILTER+MOD+ROW関数>
次のような表があります。
やりたいことは、1Fと2Fの金額合計を求めたいわけです。
つまり、1行おきで合算したい。
A列が1F販売金額となっていれば、SUMIF関数をつかうことで、合計を求めることもできます。
ただ今回の表は、2024年という文字列があって、2025年2026年という文字列もついています。
つまり、同じ条件でというわけにはいきません。
A列から、色々作業をしなければいけません。
では、何かいい方法はないのでしょうか。
以前は、SUMPRODUCT関数をつかって求めていましたが、FILTER関数をつかう方法で、求めてみようと思います。
E2には、FILTER関数をつかった数式を設定しました。
=SUM(FILTER(B2:B7, MOD(ROW(B2:B7),2)=0))
これで、1Fの金額合計を求めることができました。
2Fの数式は、
=SUM(FILTER(B2:B7, MOD(ROW(B2:B7),2)=1))
という数式で求められます。
数式を説明します。
SUM関数の引数の中から説明するとわかりやすいので、まずはFILTER関数から説明します。
FILTER関数は、抽出する関数です。
FILTER関数の最初の引数は、「配列」。
範囲のことなので、B2:B7を設定します。
次の引数は、「含む」。
抽出条件です。
その抽出条件には、MOD(ROW(B2:B7),2)=0
という数式を設定します。
MOD+ROW関数は、そのセルが偶数行なのか、奇数行なのかを判断するときに使う方法です。
MOD関数は、割った余りを求める関数です。
ROW関数は、セルの行番号を求める関数です。
つまり「セルの行番号を2で割った値が、ゼロ」というのが抽出条件になるというわけです。
これで、偶数行なのか奇数行なのか、わかります。偶数奇数ですから、一行おきが対象になるという仕組みです。
あとはSUM関数で合計する。
このように、FILTER関数をつかうことで、一行おきを対象にした合計を求めることができます。
