![単一の条件で複数の行を合計する](https://rvso.com/image/1606683/%E5%8D%98%E4%B8%80%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E8%A1%8C%E3%82%92%E5%90%88%E8%A8%88%E3%81%99%E3%82%8B.png)
シートに次の表があるとします月:
そして次の表はシート__データ:
シート内__データ指定されたカテゴリ名について、列 P、R、T、V、X のすべての値を合計したいと思います。
1行の場合、次の式を使用できることがわかっています: (例: cat6)
=IF(
SUMIF(month!$O$5:$O$34;__data!$A7;month!$P$5:$P$34)<>0;
SUMIF(month!$O$5:$O$34;__data!$A7;month!$P$5:$P$34);
"")
さて、これは で可能になるはずだと信じていますSUMPRODUCT
。しかし、これをどのようにコード化すればよいのか、私にはわかりません。
この SUMPRODUCT 数式がありますが、#VALUE!
エラーが発生します。
=SUMPRODUCT(
--(month!$O$5:month!$O$34=__data!$A7);
(
month!$P$5:month!$P$34 +
month!$R$5:month!$R$34 +
month!$T$5:month!$T$34 +
month!$V$5:month!$V$34 +
month!$X$5:month!$X$34)
)
これは、P、R、T、V、X の値の入力方法に関係していると思います。これは次の式で実行されます。
=IF(SUMIF($B$5:$B$123;O8;$D$5:$D$123)<>0;SUMIF($B$5:$B$123;O8;$D$5:$D$123);"")
答え1
これを 1 つの数式で簡単に実行できます。ただし、不連続な列を返すメソッドが必要です。
catTbl
参照しやすいようにデータテーブルに名前を付けました。- 次の関数を使用して行を検索します
MATCH
。=MATCH(A2,INDEX(catTbl,0,1),0)
- カテゴリは A2 にあり、
INDEX
関数は最初の列のすべての行を返します。
- カテゴリは A2 にあり、
- INDEX`関数を構築します
N(IF(1,{2,4,6,8,10})) will return the relevant columns to the
。 - それから
SUM
配列だけ
したがって、全体の式は次のようになります。
=SUM(INDEX(catTbl,MATCH(A2,INDEX(catTbl,0,1),0),N(IF(1,{2,4,6,8,10}))))