プロが教えるわが家の防犯対策術!

エクセルでB2~B100までの間に1.2.3.4.5.6.7.8.9の各数字が単体でランダムに書かれてある場合、1の数量と3、5,9の数量をたしたものを求めたいのですが
=COUNTIF(B2:B100,1)+COUNTIF(B2:B100,3)+COUNTIF(B2:B100,5)+COUNTIF(B2:B100,9)
の式では内容が求める内容が多くなった時、確認しにくいので、カンマで区切るとかOR関数を使うかで簡単に見つける内容を列挙する方法がないでしょうか?

=COUNTIF(B2:B100,1,3,5,9)or =COUNIF(B2:B100,or(1,3,5,9)
コレハどちらもダメでした。困ってます。教えてください。

A 回答 (5件)

配列要素として使えるSUMPRODUCT関数を使います。


https://mt-soft.sakura.ne.jp/kyozai/excel_high/2 …
関数式の例
 =SUMPRODUCT(COUNTIF(B2:B100,{1,3,5,9}))
配列の{1,3,5,9}はセル範囲で指定することも可能です。
https://www.clayhouse.jp/array/array01_e.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。
SUMPRODUCT(COUNTIF・・の関数は知りませんでした。
今後他の関数にも使いたいと思います。
ありがとうございました。

お礼日時:2023/11/23 13:16

すみません、理解してないかもしれないのですが、countifsでは求められないのでしょうか?

    • good
    • 0

こんにちは



式の意味を理解できないと間違って使っても気が付かないので、最初にご提示の方法の方が良いと思います。
例えば、一気に求めようとせずに、
 ・C1セルに、=COUNTIF(B2:B100,1)
 ・C2セルに、=COUNTIF(B2:B100,2)
   ・・・・
としておいて、必要な部分を加算するようにしてはいかがでしょう。
 =SUM(C1,C3,C5,C9)
などとすることで、
>内容が多くなった時、確認しにくいので、
に関しては、確認しやすくなるのではないでしょうか?


「御託はいいから、どうしても一気に求めたいんだ!」というのであれば、配列計算をさせれば可能です。
 =SUMPRODUCT((B2:B100={1,3,5,9})*1)
のような感じでしょうか。
欠点としては、
 ・式がわかりにくくなる
 ・無駄な計算が増加しがち
ということがありますが・・
きちんと内容を理解したうえでご利用ください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
最初に言われた方法がわかりやすくてよいと思います。
2番目の分は、実際にやってみたところ、答えが出ませんでした。
やり方が悪いのかもしれないので、何度か工夫してみます。
ありがとうございました。

お礼日時:2023/11/23 13:26

一気に求めようとせずに、いったん表に記載するのはどうでしょうか


条件が増えても数式をコピペして増やせば佳いですし楽だと思います。
「COUNTIFで同一範囲にある複数の内容」の回答画像2
    • good
    • 0

(`・ω・´)


=COUNTIF(B2:B100,1)+COUNTIF(B2:B100,3)+COUNTIF(B2:B100,5)+COUNTIF(B2:B100,9)
これで充分だよ。
条件が増えたら、その条件の分だけ記述する内容が増えるんだから、
分かりやすい数式にすることを勧めます。

・・・

「数値」ということなら、CHOOSE関数を使うという方法もある。
 =CHOOSE(インデックス,値1,[値2]…)
のような書き方になる。
この ”インデックス” に範囲を入力して、
”値1” から ”値9” に対応する場所に「1」、対応しない場所に「0」を入力し
 =CHOOSE( B2 , 1,0,1,0,1,0,0,0,1 )
とすると、数値に対応した場所にある値を拾ってくるので、これを合計すれば良い。
 =SUM(CHOOSE( B2:B100 , 1,0,1,0,1,0,0,0,1 )
とでもしてみましょう。
ただし、
 Shift + Ctrl + Enter 
で入力を確定させ「配列数式」にする必要があります。
配列数式になると数式の見え方がちょっと変わります。

 =SUM(CHOOSE( B2:B100 , 1,0,1,0,1,0,0,0,1 )
 ↓
 Shift + Ctrl + Enter で確定
 ↓
 {=SUM(CHOOSE( B2:B100 , 1,0,1,0,1,0,0,0,1 )}

※ { } を文字で入力しても配列数式にはならずエラーになり受け付けてくれません。

これは
  =SUM(CHOOSE( B2 , 1,0,1,0,1,0,0,0,1 )
  =SUM(CHOOSE( B3 , 1,0,1,0,1,0,0,0,1 )
  …
  =SUM(CHOOSE( B99 , 1,0,1,0,1,0,0,0,1 )
  =SUM(CHOOSE( B100 , 1,0,1,0,1,0,0,0,1 )
を足し算したものになります。

・・・

そんなわけで、質問の1~9の数値は例であり、実際には文字列だったり、マイナスの値を含んでいたり、極端に大きい数値の場合には使えませんのでご了承ください。
    • good
    • 0
この回答へのお礼

ありがとうございます!
SUM(CHOOSE・・・の関数は知りませんでした。
今後大いに利用したいと思います。
ありがとうございました。

お礼日時:2023/11/23 13:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A