• ベストアンサー

エクセル COUNTIFで複数条件を表現する方法

はじめまして。 A1~A10に国名があるとします。  | A --|--------- 1| アメリカ 2| ドイツ 3| カナダ 4| イギリス※ 5| フランス 6| (略) 11|=COUNTIF(A1:A10,{"*","<>*※"}) この範囲の中で、'※'記号の無い国をカウントしたいのですが、 範囲中に、空白もある可能があり、 >COUNTIF(A1:A10,"<>*※") とすると、空白もカウントされてしまいました。 なので >COUNTIF(A1:A10,{"*","<>*※"}) としたのですが、期待する数字が返ってきません。 下の場合、「4」と言う数字が欲しいのですが どなたかご教授願います。

noname#19542
noname#19542

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

  • ベストアンサー
  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.6

No.5です。 >作業列を使わない方法があれば助かるのですが、 もうご覧にならないかもしれませんが、次のような式なら一応可能です。 範囲が A1:A20だとして =SUM(IF((LEN(A1:A20)*(RIGHT(A1:A20)<>"※")),1/COUNTIF(A1:A20,A1:A20))) 配列数式です。 Ctrl+Shftキーを押しながら Enterで確定してください。 数式が{ }で囲まれます。 { }で囲まれないときは、 F2キーを押してから、Ctrl+Shift+Enter してみてください。 配列数式は範囲が広くなると重くなります。 また、1/COUNTIF で、重複を除くカウントをするのは、小数計算のため誤差が出る可能性もないとは言えません。

noname#19542
質問者

お礼

ご丁寧にありがとうございます。 作業列を作らず出来そうなので、助かります。 是非参考にさせていただきます。 本当にありがとうございました。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

配列数式ですが、(既に出てますが)考え付く形を素直に配列数式に組み立てると =SUM(IF((ISERROR(FIND("*",A2:A10))*(A2:A10<>"")),1,0)) と入れて、SHIFT+CTRL+ENTERの3つのキーを同時に押す。 例 A1:A10で s e a f d a* c C* a* で、 結果は6 *のついていない国のグループに重複したものはないとしていて、除いてはいませんが。 式の意味は ISERROR(FIND("*",A2:A10))は*が見つからない *はAND条件(掛け算になる) A2:A10<>""は空白でない 該当すれば1(件として)を足す

noname#19542
質問者

お礼

ご回答ありがとうございます。 先のEL-SUR様同様、分り易い解説も記載して頂きとても勉強になりました。

  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.5

No.4です。 イギリス※ が2個以上あるように 同じ国名で ※がつくものが重複する場合ですが、 どうせ作業列を使うなら、 B1: =IF((RIGHT(A1)<>"※")*(COUNTIF($A$1:A1,A1)=1),1,"") 下にコピー カウントは、B列を SUM関数で合計すればすむ話でしたね、すみません。 =SUM(B:B)

noname#19542
質問者

お礼

ご丁寧な返信ありがとうございました。 >条件は最初の質問で出していただくようお願いします。 お手数をお掛けしてしまいました。すみませんでした。 >※のつく国名が重複することもあるんでしょうか? >イギリス※ が 2回出てくるとか。 はい。あります。 正直申し上げますと、作業列を使わない方法があれば助かるのですが、 自力では無理っぽいので、EL-SUR様からお教え頂いた方法を使わせていただきます。 どうもありがとうございました。

  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.4

No.2です。 条件は最初の質問で出していただくようお願いします。 ※のつく国名が重複することもあるんでしょうか? イギリス※ が 2回出てくるとか。 そういうのがなければ↓でどうでしょう? =COUNT(INDEX(1/(MATCH(A1:A10,A1:A10,0)=ROW(A1:A10)),0))-COUNTIF(A1:A10,"*※") 検索範囲が 2行目以下から始まる場合も、 ROW(A1:A10) の引数は A1から始めてください。 範囲が A2:A100 なら ROW(A1:A99) のように。 >=SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10)) ↑だと空白セルがあればエラーになりませんか? もし イギリス※ のようなものも重複しているなら、 たとえば B列を作業列にして、 B1: =IF((RIGHT(A1)="※")*(COUNTIF($A$1:A1,A1)>1),1,"") A列のデータ最終行までコピー 重複を除いたカウントは↓ =COUNT(INDEX(1/(MATCH(A1:A10,A1:A10,0)=ROW(A1:A10)),0))-COUNTIF(A1:A10,"*※")+SUM(B:B)

回答No.3

空白行はCOUNTBLANK(A1:A10)で求められますので、 出てきた答えから引けば問題ないと思います。

noname#19542
質問者

お礼

ご回答ありがとうございます。 今回は、重複しているデータ数も省きたいので、次回の参考にさせていただきます。

  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.2

こんなのでどうでしょう p(..) =COUNTIF(A1:A10,"*?")- COUNTIF(A1:A10,"*※") とか =SUMPRODUCT((A1:A10<>"")*(RIGHT(A1:A10)<>"※"))

noname#19542
質問者

補足

ご回答ありがとうございます。 実は、例で挙げた国名が重複している場合があり、 その場合は重複している国は一としてカウントしたいので既に >=SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))-IF(COUNTBLANK(A1:A10)>0,1,0) と言う記述をしています。 で、今回は >COUNTIF(A1:A10,A1:A10) の検索条件を変更すれば良いかなと思ったのですが、 どうも上手くいきません。 またご意見お願いいたします。

  • ysko614
  • ベストアンサー率31% (103/329)
回答No.1

考え方を変えて、空白のある行を求めてはどうですか? 全体のデータのカウント数と範囲内の数の差が空白ですよね?あるいは、=COUNTIF(A1:A10,"")とすれば空白のセルの数が出てきます。 それと最初求めた確実に出てくる数を足せばいいと思います。

noname#19542
質問者

お礼

ご回答ありがとうございます。 今回は、重複しているデータ数も省きたいので、次回の参考にさせていただきます。

関連するQ&A

  • Excel平均値のSUMIF/COUNTIFのCOUNTIFの条件

    毎月の集計で常に平均値を知りたいのですが、経過日については日々数字が入ります。後日分について、空白部分のカウントをしないように関数をいれ、現在までの平均値を把握したいと思います。 SUMIF(A1:A31)/COUNTIF(A1:A31)だと誤って空白もカウントしています。望んでいる経過日までの平均値が出ません。 空白をカウントしない関数を教えていただけませんでしょうか?

  • 《エクセル2000》条件にあった行のみ、数字の個数をカウントする?

    皆様、こんにちは。 A1~B20の範囲に数字と空白が混在しています。 「A列に数字が入っている行のみ、B列に入っている数字の個数をカウントする(A列に空白が入っている行はカウントしない。A列に数字が入っていてもB列に入っていなければもちろんカウントしない)」 …という式は作れるでしょうか。 合計はSUMIFを使えばいいのですが、同じ式をCOUNTIFには流用できないんですね(困惑)。 (↑これも以前ここで聞いて、教えて頂いたのですが) どうかどうか、よろしくお願いします。

  • Excelのカウントについて(複数条件)

    Excelのカウントについて質問です。      A列  1行目 1-2-3  2行目 2-3-1 3行目 4-5-1 4行目 3-2-1 5行目 1-3-2 6行目 ( ) 上記の表があり、A列6行目にA1~A5のカウントを表示したいと思います。 その際、1-2-3、2-3-1、3-1-2など、同じ数字でできているものであれば、順番が違っていても同じものとみなしてカウントしたいのです。 ※1-2-3は文字列です。 COUNTIFを使って下記のようにすればカウントできなくはないのですが、もっと効率よく短縮して書けないかと思っています。 =COUNTIF(A1:A5,"1-2-3")+COUNTIF(A1:A5,"1-3-2")+COUNTIF(A1:A5,"2-1-3")+COUNTIF(A1:A5,"2-3-1")+COUNTIF(A1:A5,"3-1-2")+COUNTIF(A1:A5,"3-2-1") 簡潔にする方法がありましたらおしえてください。

  • エクセル:COUNTIFで「?」の個数だけを数えたい。

    例えば、 任意の範囲のなかに「?」が2個と「*」が3個があります。 「?」の個数だけを数えたいんですが、 「?」や「*」がワイルドカードのためか、 =COUNTIF(A1:C10,"?")では、「?」「*」どちらもカウントしてしまい、結果は5個になります。 =COUNTIF(A1:C10,"*")でも結果は同じです。 ちなみに、「~」もワイルドカードですが、「~」のカウントは正常に働きます。(?や*を拾いません) どうにか「?」だけをカウントする方法を教えてください!

  • ExcelのCOUNTIFについて

    Excel2007を使用しています。 COUNTIFについて次のようなことは可能か教えて下さい。 画像は、仲内の麻雀の成績表です。 A~Fさんまでそれぞれ行によって成績をまとめてあります。 そして、D~F列の1,2、3、4という数字は、K列、N列の順位の回数をCOUNTIFにてそれぞれカウントしています。例えばAさんの場合は、1G目は試合なし、2G目で4着をとっているのでG列の4のところに1カウントしています。 同様に、Eさんは、1G目4着、2G目1着なのでD列の1位とG列の4着が1つずつカウントされています。 これは、Aさんの場合 =COUNTIF(I3:N3,1) にてD列の1着の回数をカウントしています。(同様に、E列~G列も末尾の1を2~4にそれぞれしてカウントしています。 で、問題は8行目のFさんなのですが、上と同様にI8~N8をCOUNTIFでカウントすると、本来は2G目の2着のみなので、E列の2着が1つカウントされるだけなのですが、I8~N8を対象範囲としているのでL列の『P』(※ポイントです)の+3.0を誤って3着にカウントしてしまい、F列の3着のところに1つカウントしてしまっています。 説明が長くなってしまいましたが、要は、着順のK列、N列、Q列・・・・と着順のみの列をCOUNTIFでの範囲にしたいのですが可能でしょうか? ※ゲーム数がこの後相当数になりますのでセルをコピーする予定ですので列を1つずつ選択する方法ではなく何か数式で教えて下さい 以上、分かりにくい文で申し訳ありませんがよろしくお願い致します。

  • エクセルのcountifについて

    はじめまして。 countifを使って以下の作業を行いたいのですが 上手くいきませんのでよろしくお願いします。   A   B 1 1149 個数を出す 2 7921    3 97    4 171    5 265 ・ ・ ・ 10000まで A列に10000までランダムに数字を入力して  COUNTIF(A1:A10000,1)で B列にA1からA10000の内1は何個か数える。 ここまでは出来るのですが このまま10000まで引っ張って行くと  COUNTIF(A2:A10001,1)  COUNTIF(A3:A10002,1)     ・     ・     ・ となってしまいます。 私としては  COUNTIF(A1:A10000,1)  COUNTIF(A1:A10000,2)  COUNTIF(A1:A10000,3)   と範囲はそのままで検索だけを1から10000まで変えたいのですが方法はあるでしょうか? 手作業でやる事も考えましたが余りにも時間がかかるので挫折しました。 解決法をご存知の方よろしくお願いします。

  • Excelの関数(COUNTIF?)

    A列には1~3000の数字が入っています。 このうち、150以下、150~200、200以上のセルがいくつあるのかカウントするには、どのような関数を使えば良いのでしょうか。 COUNTIFを使うと思うのですが、検索条件にどう表現するのか分からず困っています。

  • Excelの関数COUNTIFについて

    ExcelにCOUNTIFを設定しています。 セル範囲【D9:Y9】には、 ○、△、×のいずれかが入力されています。 A9が空欄でなければ、○の数をカウントするには、 以下の数式でOKでした。  =IF(A9="","",COUNTIF(D9:Y9,"○")) この数式を○か△であればカウントするような数式に 変更したいのですが、なかなかうまくいきません。 ORを組み合わせればいいのでしょうか・・・ Excelのバージョンは2003です。 よろしくお願いいたします。

  • Excel COUNTIF の仕様について

    Excel の COUNTIF にて、検索対象を 0001 とし、検索範囲のセルには、 0001 および 01E0 があったとすると、このカウント結果は、2 となるのですが、何故でしょうか? 期待している結果は、1 かと思っているのですが、そうならない理由がよく解りません。 初歩的な質問で恐縮ですが、どなたかご教示の程、宜しくお願い致します。

  • エクセルの数式で、COUNTIF(A1:A100,">""") 

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2224824 の関連質問です。 表A1:A100にある、各セル内の数式で求められた計算結果が文字列の場合、その数を調べるには、 =COUNTIF(A1:A100,">""") で、各セルの計算式の答えが "" 以外の文字列の数を返してくれるようです。(数値や空白セルはカウントされません。) 非常に便利なのですが、ちょっと腑に落ちないのは、  >""  って、""より大きいということですよね? しかし文字列は数字とちがい大小はないのではないでしょうか? もう一点疑問です。 ためしに、=COUNTIF(A1:A100,">=""")  としてみました。 今度は、  >=""  ですから、""も含むということになるはずですよね? ところが答えが  ""  となるものをカウントしません。 不思議でたまりません。 よろしくお願いします。

専門家に質問してみよう