Sumproduct関数を利用した複数条件の合計算出法

Excel2003の使用期間が長かったため複数条件の合計を出したいときは Sumproduct関数を使ってしまいます。

こんな感じ f:id:ExcelLover:20161021222014j:plain

この例だと「日付」列を対象にして月が1、日が1の金額を合計する。

このように検索条件が複数ある場合の合計は問題なく出来るのだけど、 以下のように1つの条件が複数の値とマッチするような条件だと エラーが出てしまう。

f:id:ExcelLover:20161021222647j:plain

これは「日付」列を対象にして、月が1と3にマッチする金額を合計する。
つもりで書いているのだけどエラーが発生している。

ずっと原因がわからなかったのだけど、以下の方法でちゃんと計算できるようになる。

f:id:ExcelLover:20161021223222j:plain

わかりにくいけど、条件設定部分と合計する数値部分を繋ぐ部分が
「,」か「*」のちがいです。

正しく計算できるようになった後もなぜ「*」だと上手くいくのか理解が出来ませんでした。
どちらにしても条件部分の配列と数値部分の配列を掛けた後に合計するのはおなじだろうと。

・「,」の場合:sumproduct関数の第1引数と第2引数をsumproduct関数の機能で掛ける
・「*」の場合:sumproduct関数の第1引数の中で配列同士を掛ける

「,」の場合何故エラーになるのか。HELPを見ると答えがありました。

引数となる配列は、行数と列数が等しい配列である必要があります。行数と列数が等しくない場合は、エラー値 #VALUE! が返されます。

sumproduct関数の中の処理を追いかけていくと次のような感じです。 f:id:ExcelLover:20161021230141j:plain

複数の条件のマッチングをした結果、配列が2列に増えているためsumproduct関数の
行数と列数が等しい配列でないといけないという制約に引っかかっています。

sumproduct関数の機能ではなく、配列同士の掛け算をおこなってやることで
この制約に引っかからずに済みます。

あ~スッキリした。

めでたしめでたし。