
文字列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の疑問として質問いたしました。
No.1ベストアンサー
- 回答日時:
以下だと重複カウントされます。
=SUMPRODUCT((ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))))
理由は、Aがあるとき「ISNUMBER(FIND("A",A1:A10))」はTRUE、Bがあるとき「ISNUMBER(FIND("B",A1:A10))」はTRUE、なので、TRUE+TRUE=2となります。(=TRUE+TRUEという式をセルにいれれば2になるはずです)
本題の以下ですが、
=SUMPRODUCT((ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)*1)
TRUE+TRUE=2、TRUE+FALSE=1、FALSE+TRUE=1、いずれも1以上なので、「(ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)*1」の結果は2でも1でも1とカウントします。
なので、結果は重複なしになります。
なあ~るほどぉ!
非常にわかりやすい解説をありがとうございました。
ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)がTRUEを返すから、それに*1してるってことですね。
納得しました。
kyboさま、ありがとうございます。(o。_。)oペコッ.
No.3
- 回答日時:
>AB両方があるセルが重複カウントされないのかどうもわかりません。
⇒sumproduct式の「+」は論理和ですから、両文字がある場合、1+1⇒1となるので重複計数されません。
No.2
- 回答日時:
SUMPRODUCT関数では答えがTRUEであれば1、FALSEであれば0と数えられますね。
AとBが同時に含むセルではISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))の値は2になりますが式ではその足し合わせた値が1以上の場合にはということで、2の場合であってもその答えは1以上、すなわちTRUEとなって1が返されますね。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 複数の条件に合致する個数を求めるには? 3 2022/04/19 16:39
- Excel(エクセル) Vba エクセルマクロで、 A列の、A1セルからA10セルに空白のある行を削除する、のは Range 3 2022/11/05 17:44
- Excel(エクセル) エクセル関数についてお教えください 3 2023/07/24 12:33
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/02/18 11:30
- Excel(エクセル) エクセルのA1~A5の任意のセルを選んだら1、A6~A10のセルなら2と返す設定にしたいと思ってます 6 2023/03/20 18:46
- Excel(エクセル) 特定の文字の合計値(空白を無視+可変に対応)を求める関数について 1 2022/08/18 10:51
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
- Visual Basic(VBA) 重複したデータ(空白は除く)のVBA表記について 5 2022/08/15 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
(Excel)数字記入セルの数値の後...
-
セルをクリック⇒そのセルに入力...
-
エクセルで指定したセルのどれ...
-
エクセルのセルの枠を超えて文...
-
エクセル セルの中に縦線が入っ...
-
枠に収まらない文字を非表示に...
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
Excelで教えてください。 バー...
-
Excelで住所を2つ(町名迄と番...
-
エクセル オートフィルタで絞...
-
【エクセル】IF関数 Aまたは...
-
エクセルの書式設定の表示形式...
-
excelの特定のセルの隣のセル指...
-
Excel2003 の『コメント』の編...
-
Excel 例A(1+9) のように番地の...
-
数式を残したまま、別のセルに...
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報