• ベストアンサー
  • すぐに回答を!

SUMPRODUCT関数について

  • 質問No.5622078
  • 閲覧数123
  • ありがとう数1
  • 回答数3

お礼率 13% (18/131)

http://oshiete1.goo.ne.jp/qa5621207.html
で質問していたものですが
お答え頂いた関数について質問させて下さい。
=SUMPRODUCT(($A$2:$A$100+($B$2:$B$100>"21:00"*1)=E2)*($C$2:$C$100=F2))
についてなのですが、SUMPRODUCT関数の中で使われる+には
どういった意味があるのでしょうか?
前半部分(=E2まで)の意味が分からず、困っております。
どなたか解説をお願いします。

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 53% (1521/2850)

本来なら2つの条件に合致するセルの個数は「SUMPRODUCT(($A$2:$A$100=E2)*($C$2:$C$100=F2))で求められるのですが、今回のようにB列のデータが21:00よりも大きい場合は翌日扱い、すなわち日付に1を加える必要があります。

この部分の配列数式は普通に書くとなら「IF($B$2:$B$100>"21:00"*1=E2,1,0)」のような数式になりますが、これを簡略化して、かつそのまま配列数式として計算できるように「$B$2:$B$100>"21:00"*1)=E2」としています。

すなわち、上記の数式はB2セルからB100セルの値が21:00よりも大きい場合は、TRUEを返し、それ以外の場合はFALSEを返す配列が得られますが、これを四則演算するとTRUEは「1」FALSEは「0」とみなされて計算されますので、その行のデータのみA列の値に1を加えた値と比較することになるわけです。
お礼コメント
wareware7

お礼率 13% (18/131)

前回に引続きありがとうございます。
分かりやすい解説で、私でも十分理解できました。
感謝です。
投稿日時:2010/01/25 16:59

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 53% (1521/2850)

IF関数の説明部分に誤りがありましたので補足します。

論理式ではなく通常のIF関数で入力する場合の全体の数式は以下のようになります。

=SUMPRODUCT(($A$2:$A$100+IF($B$2:$B$100>"21:00"*1,1,0)=E2)*($C$2:$C$100=F2))

しかし、この数式は配列内にIF関数を使っているので加算した値をそのまま配列として使用できません(正しい値を返しません)。
このような数式の場合は、一般的な配列数式と同様に、数式入力後Ctrl+Shift+Enterで確定する必要があります。
  • 回答No.1

ベストアンサー率 26% (11/42)

21時以降だったら、+1日をしているのですね。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ