• ベストアンサー

SUMPRODUCT関数について

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まで)の意味が分からず、困っております。 どなたか解説をお願いします。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

本来なら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
質問者

お礼

前回に引続きありがとうございます。 分かりやすい解説で、私でも十分理解できました。 感謝です。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

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で確定する必要があります。

  • passes
  • ベストアンサー率26% (11/42)
回答No.1

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