Excel2003の使用期間が長かったため複数条件の合計を出したいときは Sumproduct関数を使ってしまいます。
こんな感じ
この例だと「日付」列を対象にして月が1、日が1の金額を合計する。
このように検索条件が複数ある場合の合計は問題なく出来るのだけど、 以下のように1つの条件が複数の値とマッチするような条件だと エラーが出てしまう。
これは「日付」列を対象にして、月が1と3にマッチする金額を合計する。
つもりで書いているのだけどエラーが発生している。
ずっと原因がわからなかったのだけど、以下の方法でちゃんと計算できるようになる。
わかりにくいけど、条件設定部分と合計する数値部分を繋ぐ部分が
「,」か「*」のちがいです。
正しく計算できるようになった後もなぜ「*」だと上手くいくのか理解が出来ませんでした。
どちらにしても条件部分の配列と数値部分の配列を掛けた後に合計するのはおなじだろうと。
・「,」の場合:sumproduct関数の第1引数と第2引数をsumproduct関数の機能で掛ける
・「*」の場合:sumproduct関数の第1引数の中で配列同士を掛ける
「,」の場合何故エラーになるのか。HELPを見ると答えがありました。
引数となる配列は、行数と列数が等しい配列である必要があります。行数と列数が等しくない場合は、エラー値 #VALUE! が返されます。
sumproduct関数の中の処理を追いかけていくと次のような感じです。
複数の条件のマッチングをした結果、配列が2列に増えているためsumproduct関数の
行数と列数が等しい配列でないといけないという制約に引っかかっています。
sumproduct関数の機能ではなく、配列同士の掛け算をおこなってやることで
この制約に引っかからずに済みます。
あ~スッキリした。
めでたしめでたし。

すぐわかるSUPER Excel配列マジックを極める 営業、経理、総務もこれでExcelマスター! 面倒な集計や計算処理が格段に楽になる! (すぐわかるシリーズ)
- 作者: 土屋和人
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2012/09/13
- メディア: 大型本
- クリック: 1回
- この商品を含むブログを見る