単一の条件で複数の行を合計する

単一の条件で複数の行を合計する

シートに次の表があるとします:

表の例

そして次の表はシート__データ:

表2の例

シート内__データ指定されたカテゴリ名について、列 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関数は最初の列のすべての行を返します。
    • 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}))))

ここに画像の説明を入力してください

ここに画像の説明を入力してください

答え2

一般的に、連続していない Excel 数式を扱うのは困難です。

要約する列を指定するヘルパー行を追加することをお勧めします。その後、次の比較的単純な数式を使用できます。

=SUMIF($Q$4:$Y$4,1, INDEX($Q$6:$Y$19,MATCH(M6,$P$6:$P$19,0),0))

ここに画像の説明を入力してください

関連情報