文字列AかBを含むセル数をSUMPRODUCT関数で求める場合
文字列AかBを含むセル数をSUMPRODUCT関数で求める場合
エクセル2000です。
A1:A10のセル範囲だとして
=SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1)
とすると、同一セルにA、Bの両方があった場合、重複してカウントされてしまいます。
重複を除外するために、
=SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1)-SUMPRODUCT(ISNUMBER(FIND("A",A1:A10))*ISNUMBER(FIND("B",A1:A10)))
と、重複してカウントされた数から両方が存在するセルの数を減じて求めましたが、以下のようなより簡素な式でも求められことがわかりました。
=SUMPRODUCT((ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)*1)
この式でなぜAB両方があるセルが重複カウントされないのかどうもわかりません。
ご教示いただければ幸いです。
なお、SUMPRODUCTではなく
=SUM(COUNTIF(A1:A10,{"*A*","*B*"}))-SUM(COUNTIF(A1:A10,{"*A*B*","*B*A*"}))
でもできることは存じておりますが、今回はSUMPRODUCTの疑問として質問いたしました。
お礼
素早いご回答ありがとうございました。 ご指摘のように質問では「式の値がある」のは全部プラスの数字で、しかも上から詰めて表示でした。 A列の具体的な数式は「=SUMPRODUCT((sheet1!$A$1:$A$15000=$C10)*(sheet1!$E$1:$E$15000=$A$2), (sheet1!$H$1:$H$15000))」と言う長い式を入れていました。 INDIRECT関数に関しては他の方の回答を参考にしました。 ありがとうございました。