• ベストアンサー

複数の条件を満たすセル数の合計は配列関数を使う?

  A列 B列 ------------- 1  1  2 2  1  1 3  3  5 4  1  7 5  4  8 6  1  4 7  7  5 8  5  6 9  1  1 10  9  3 上記の表でA列もB列も“1”であるセルの数を数えたいのです。 C列の1~10行目に   =IF(A1=1,IF(A1=B1,1,0),0) と計算式を入力・コピーしその合計を求めることができますが、 計算用の列を作らず、別のシート上のセルに 計算結果のみ表示させたいと思っています。 {=SUM(IF(Sheet1!A1:A10=1,IF(Sheet1!B1:B10=1,1,0),0))} 上記の計算式で一応計算できているようなのですが、 配列関数というのがなんなのか良く分からないのです。 これで大丈夫なのでしょうか? お詳しい方ご助言をお願いします。

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんばんは >{=SUM(IF(Sheet1!A1:A10=1,IF(Sheet1!B1:B10=1,1,0),0))} は配列関数ではなく配列数式です 通用は配列を扱わない式でCtrl+Shift+Enterで式を{} で括り配列を扱えるようにします 配列数式を理解するには個々の参照セル単位の式に 分解してみれば簡単です rngoさんの式の場合 {=SUM(IF(Sheet1!A1:A10=1,IF(Sheet1!B1:B10=1,1,0),0))} はA1:A10 B1:B10 の配列を順番に  =IF(A1=1,IF(B1=1,1,0),0)  =IF(A2=1,IF(B2=1,1,0),0)   :  =IF(A10=1,IF(B10=1,1,0),0) と計算して最後に SUM() で合計しています。 ちなみに 例記の条件であれば {=SUM((Sheet1!A1:A10=1)*(Sheet1!B1:B10=1))} で可能です 配列関数は、このような{}を付ける入力方法でなく ても配列処理をする関数で 今回の場合 SUMPRODUCT() が使えます。 =SUMPRODUCT((Sheet1!A1:A10=1)*(Sheet1!B1:B10=1)) で試してみて下さい。

rngo
質問者

お礼

ありがとうございます。 早速参考にさせていただきます。

関連するQ&A