• ベストアンサー

2つ以上の条件を満たす個数をカウントするには

2つ以上の条件を満たす個数を数えたいのですがうまくいきません。 例えば   A列    B列   C列 1 りんご  トマト  赤色 2 りんご  きゅうり 緑色 3 りんご  きゅうり 赤色 4 ぶどう  トマト  赤色 5 ぶどう  きゅうり 緑色 6 りんご  トマト  緑色 7 ぶどう  きゅうり 赤色 という表があった時に、「りんご」でもあり「トマト」でもある数は 1行目と6行目の2個である、という計算です。 また同様に、「ぶどう」でも「トマト」でも「赤色」でもある、等 条件が3つになる場合もあります。 COUNTIF関数で出るかと思いましたが、それぞれの列の個数は求められても 2列以上条件をつけるやり方がわかりません。 よろしくお願いします。

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

  • ベストアンサー
  • april21
  • ベストアンサー率42% (91/216)
回答No.8

補足 No.7はNo.4で書いた条件指定のセル(1行目と2行目)をシート2に作って 抽出元データ(4行目から11行目)を1行目から8行目に変更しての事です。 Sheet1!A1:C8,1,A1:C2 ↑の1というのは元データの1列目をカウントするという事です。 (2列目なら2・・適当に変更してください) >元データの修正をすれば、すべての計算式にすぐ反映するようにしたいのですが、できるでしょうか? 「りんご」でもあり「トマト」や「ぶどう」でも「トマト」でも「赤色」という風に種類が複数の場合 なら一々条件を指定しなおすのは面倒なので 条件指定のセル(1行目と2行目)を複数作ってDCOUNTA関数でそれぞれの個数を求めてシート2 のセルから参照させるかシート2に作れば良いのでは?

vie511
質問者

補足

まとめてこちらへのお礼で申し訳ありません。 すごく参考になりました。ありがとうございました。 そうですね、データ入力している1枚目のシートに条件等多数作るのも 作業がしにくいですね。 sheet2に条件だけわけてしまえば、見た目もわかりやすくなるし。 DCOUNTA関数で、かなりの問題は解決したのですが、もうひとつよろしいでしょうか? 一覧から2つの条件から抽出したものから、ある条件のもの引いた数を求めたいのですが。 #「りんご」で「トマト」の条件にあったもので「赤色」以外のもの。 #ただし、「色」について入力してあるセルはまばらであり(空白セルがある)、 #「りんご」で「トマト」でも色が空白のものは含めない。 Sheet2に条件を入力するとして、  A1    B1    C1 りんご  トマト りんご  トマト   赤色   として、 =DCOUNTA(Sheet!A1:C8,1,A1:B2)-DCOUNTA(Sheet1!A1:C8,1,A1:C2) にすると、色の列が空白のものも計算されてしまい、困ってしまいました。 また、同じ条件で空白の個数を求めることができるでしょうか? よろしければ、アドバイスお願いします。

その他の回答 (13)

  • april21
  • ベストアンサー率42% (91/216)
回答No.14

また補足です。(これで終わりです。。多分(^^ゞ) 条件に*と書きましたが空白にしても条件がないものとみなされるので同じです。 「り*」とすると「り」で始まる文字というようにも出来て便利なので・・・。 入れてもいれなくても同じとこなのに入れてしまいました^^;

vie511
質問者

お礼

こちらにまとめてのお礼で申し訳ありません。 空白セルにスペースを入れれば文字列と認識されるのは 知りませんでしたので、今回、たいへん助かりました。 年度締めの資料を作るのに四苦八苦していましたが、なんとかなりそうです。 本当にありがとうございました!

  • april21
  • ベストアンサー率42% (91/216)
回答No.13

補足(1回で書け!って声が聞こえますが・・(^^ゞ) >また、同じ条件で空白の個数を求めることができるでしょうか? 1列だけでよいのであれば C列のスペースをカウントするなら A2に「*」B2に「*」C2に「スペース」・・・(「」は要りません) *を条件にするとどんな文字でもOKって事になります。 ↑でいうとC2にスペースがあればカウントする事になります。 調べるスペースが複数列にまたがるのであれば =COUNTIF(Sheet1!A2:C8," ") ■スペースは半角、全角を統一してないと抽出できませんから注意

  • april21
  • ベストアンサー率42% (91/216)
回答No.12

=DCOUNTA(Sheet!A1:C8,1,A1:B2)-DCOUNTA(Sheet1!A1:C8,1,A1:C2) だと条件の指定する行が2行になってしまいます。 りんご  トマト 又は りんご  トマト  赤色 である個数とかになるのでは? りんご  トマト スペースの個数‐ りんご  トマト  赤色 の個数を 求めたいのであれば(1、3は項目名)  1  A列    B列   C列 2 りんご  トマト   3  A列    B列   C列 4 りんご  トマト  赤色 =DCOUNTA(Sheet1!A1:C8,1,A1:C2)-DCOUNTA(Sheet1!A1:C8,1,A3:C4) としないといけないのでは? 項目名はシート1もシート2も同じにしないと抽出できないと思います。 空白の場合はスペースを入れれば条件として指定できるので 空白セルにスペースをいれるには↓参照(多数ある場合は楽です) http://oshiete1.goo.ne.jp/kotaeru.php3?q=77592 (文字列をスペースに) >また、同じ条件で空白の個数を求めることができるでしょうか? スペースを条件として指定すればOKでは?

vie511
質問者

お礼

>=DCOUNTA(Sheet!A1:C8,1,A1:B2)-DCOUNTA(Sheet1!A1:C8,1,A1:C2) >だと条件の指定する行が2行になってしまいます そのとおりでした(汗) 項目名は、複数の条件がある場合、それぞれに設定しないと いけないのですね。勉強になりました。 >スペースを条件として指定すればOKでは? できました! これでやりたかったことが出来るようになりました!! 本当にありがとうございました!

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.11

#9の続きです。自分で行うとうまくいきますが・・・・ この配列数式は条件2個の場合は、「りんご」と「トマト」だったら「1」を返す式です。当然数値ですのでSUMが機能します。 このままセルに打ちこんで、Enterして、ファンクションキーF2で編集モードにして、CtrlキーとShiftキーを押した状態でEnterキーを押してください。 数式を入力する窓に{=SUM(・・・・・・)}となるはずです。{}で囲まれた式です。 各単語の前後に空白はありませんよね。

vie511
質問者

お礼

すみません! 再度やってみたら、うまく計算されました! どうやら、何か打ち間違っていた様です(汗) ありがとうございました!

  • april21
  • ベストアンサー率42% (91/216)
回答No.10

私が聞かれたのではないのですが目に入ったので >種類1が「りんご」で、種類2は「空白」で「赤色」のもの…というような。 空白はダメなのでスペースを入れれば?

vie511
質問者

お礼

ありがとうございます! 条件のセルにスペースを入れれば、空白のセルを認識してくれるのですね!? #すみません、まだ確認できてません。 #april21さんへのお礼を書いて送信したところで、こちらが目に入ったので(汗) さっそくやってみます。 ありがとうございました!

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.9

条件2個は =SUM(IF(A1:A7="りんご",IF(B1:B7="トマト",1,0),0)) 条件3個は =SUM(IF(A1:A7="ぶどう",IF(B1:B7="トマト",IF(C1:C7="赤色",1,0),0))) で出ませんか? 配列数式です。登録するときは、Ctrl+Shift+Enterとします。私だけ勘違いしてる?

vie511
質問者

お礼

ありがとうございます。 やってみましたが、SUMは数値の合計数を求めるようなので、 セルには文字列のデータばかりなので、個数は拾ってこないみたいです…たぶん。 答えが「0」になってしまいました。 それとも、私のやり方がおかしいのでしょうか(汗) ありがとうございました。

  • april21
  • ベストアンサー率42% (91/216)
回答No.7

>sheet2に、sheet1から抽出したデータの個数等を会議資料用 sheet2に個数を表示したいのであれば sheet2の適当なセルに =DCOUNTA(Sheet1!A1:C8,1,A1:C2) 抽出される元データの範囲がSheet1!A1:C8 条件指定のセル範囲がA1:C2(sheet2)

noname#1564
noname#1564
回答No.6

こんにちは DCOUNTA関数を使ってみるとよいのではないでしょうか? フィールド名を1行目につける必要がありますが・・・。 たとえば    A    B    C    D    E   種類1  種類2   色 1 りんご  トマト  赤色   種類1  種類2    2 りんご  きゅうり 緑色   りんご  トマト 3 りんご  きゅうり 赤色 4 ぶどう  トマト  赤色 5 ぶどう  きゅうり 緑色 6 りんご  トマト  緑色 7 ぶどう  きゅうり 赤色 としておきます。 DCOUTA(A1:C7,C1,D1:E2)と式を立てます。式の意味は、“A1からC7の表でD1からE2の条件を満たす色フィールドの個数を数えなさい”という意味です。D1からE2の部分のように条件を指定してあげるのがポイントのようです。 説明が下手ですみません。 もしできなかったらごめんなさい。

vie511
質問者

お礼

ありがとうございます! 出来ました! 式の意味も、よくわかりました。 と、感動したのですが、実は参照するデータの中には、空白のセルを含む列もあるのです。 そして、複数の条件のうち、空白であることが条件のひとつであるものもあるのですが… 条件が空白では無理…ですよね。 種類1が「りんご」で、種類2は「空白」で「赤色」のもの…というような。 もしよろしければ、アドバイスお願いします。 ありがとうございました。

  • sydneyh
  • ベストアンサー率34% (664/1947)
回答No.5

No.1のsydneyhです。補足に対してお応えします。 やはりこの場合、No.2の方の言う通りAccessを使うと簡単に楽に作成できるでしょう。Accessは何もそんなに難しくありません。この計算の場合Excelとあまり違いはありません。 やり方を細かく説明するととんでもなく文字数を使いそうなので簡単に言います。○Excelから該当の表があるファイルをAccessへインポートし、一つの「テーブル」を作ります。 ○それを会議用に使いやすくするため、更に「クエリ」として抽出すると、テーブルとクエリはリンクされていますので、テーブルが常に更新しても、それがクエリ上に反映されます。 ※インポートする時にExcelとリンクさせるというのを選択すると、通常はExcelで入力し、その会議用資料をつくる時のみAccessで加工するというやり方もできます。 Excelの方が使い慣れていて利用したくなる気持ちも分かりますが、業務を早く楽にするためには、少しの努力が必要だと思います。何よりこれからいくらでも応用がきくようになるでしょう。vie511さんのスキルもアップしますよ。 至急やらなくてはいけない作業でもないようですし、上記に述べたやり方はどのマニュアル本でも詳しく載っていますので、確認してぜひ試してみて下さい。

vie511
質問者

お礼

ありがとうございます。 多量のデータ処理にはAccessの方が向いている、というのはわかっているのですが ついつい手が出ずじまいになってました。 今回の作業も、この機会にAccessへの移行も視野に入れて考えてみます。 クエリのデザイン(という言い方でいいのかな)というか、 データとテーブル同士のリンク等の仕方で挫折していたのですが、 もう1度勉強してみます。 アドバイス、本当にありがとうございました。

  • april21
  • ベストアンサー率42% (91/216)
回答No.4

1  A列    B列   C列 2 りんご  トマト  赤色 3 4  A列    B列   C列 5 りんご  トマト  赤色 6 りんご  きゅうり 緑色 7 りんご  きゅうり 赤色 8 ぶどう  トマト  赤色 9 ぶどう  きゅうり 緑色 10 りんご  トマト  緑色 11 ぶどう  きゅうり 赤色 として(A2、B2、C2は条件指定セル) 適当なセルに =DCOUNTA(A4:C11,1,A1:C2) 「りんご」でもあり「トマト」でもあるという場合は A2に「りんご」 B2に「トマト」 C2に「*」 詳しくはヘルプのDCOUNTAを。

関連するQ&A

  • Excel データの個数を複数条件付きでカウントしたい

    OS:XP Ver.:Excel2003 Excelの関数で質問です。 いろいろ調べたのですがどうしてもわかりません。 お知恵をご拝借下さい。 A B C D 1月 2月 3月 りんご 250 0 300 みかん 150 80 0 りんご 88 150 200 いちご 0 300 85 ぶどう 0 350 89 (確認画面にするとずれてしまいますが、A列には品名、B~D列には月が入るようになっています。) 上記のような元データがあり、(実際はもっとたくさん) 1月    2月    3月 りんご みかん いちご ぶどう (こちらもずれてしまいますが、それぞれの月の品名ごとの集計を入れたいのです。) のような表を完成させたいと思います。 (1)表に入れるのは、合計数量ではなく【データの個数】です。 1月のりんごは2、みかんは1、という感じです。 ただし、0はカウントしたくないので、1月のいちごとぶどうは0を 返してほしいのです。 countifやsumproductなど考え付くあたり試してみましたが、うまくできません。 どういう数式(関数)を入れればよいのでしょうか? (2)2月以降のデータ範囲を指定する場合はどうすればいいのでしょうか?  1月ならA2:B6とするのかもしれませんが、2月の場合は1月列(B列)が不要ですよね?

  • 複数の条件を満たすセルの個数

    同時に複数の条件を満たすセル(行)の個数を知りたいです。  ABC 1●●○ 2○○○ 3●○● 4○○● 5●○○ たとえばB列が「○」でC列が「○」の 両方の条件を満たしている件数を調べるのは どういう関数を使えばよいのでしょうか。 「COUNTIF」とオートフィルタをあわせたような 感じなのですが、COUNTIFは複数の条件をいれられないのでしょうか。 どなたか教えてください。

  • エクセルにて複数の条件でセルをカウントしたいのですが方法が分かりません

    こんにちは。 他の方の質問と回答を見てやってみたのですが、 上手くいかなかったので質問させて頂きます。 <表>    A列    B列 1 条件1   条件2 2 チームA  りんご傷あり(青森) 3 チームA  みかん(愛媛) 4 チームA  りんご(岩手) 5 チームA  マンゴー(沖縄) 6 チームA  りんご(青森) 7 チームB  りんご(岩手) 8 チームB  みかん(愛媛) 9 チームB  マンゴー(沖縄) 上記の表から、 (1)りんごのセル個数     (この場合「4」) (2)Aチームのりんごセル個数 (この場合「3」) を求めたいと思っています。 (1)りんごのセル個数は =COUNTIF($B$2:$B$9,"りんご*") という計算式で「4」という答えが出ました。 (2)Aチームのりんごセル個数「3」を出そうとして =SUMPRODUCT((A2:A9="チームA")*(B2:B9="りんご*")) と入力したのですが、「*」が入っているためか、 3という数値が出てきません。 どなたか、関数を教えていただけませんか? 実際の表では、 (1)150行まで入力されています。 (2)条件1は「チームA」か「チームB」のみです。 (3)入力されている文字列は、「りんご」「みかん」という「左から3文字」という法則性はありません。 マクロは技術的に使えませんので、関数で対応したいと思っています。 また、別シートに集計表を一覧で作りたいので、フィルタ機能ではなく、関数で対応したいと思います。 以上、長々と申し訳ございません。 お分かりの方、是非回答をお願い致します。

  • エクセルの表の中から条件指定した個数を算出したい

    エクセルの表の中から指定した条件の個数を算出するにはCountif関数を使いますが、その個数の中から別の指定した条件の個数を算出する方法を教えてください 例 A         B おにぎり     10 おにぎり     2 そは       20 おにぎり     4 うどん      2 うどん      10 (続く) この表からA列の種類毎にB列の数値の範囲(4以上10未満、4未満、10以上)の個数を算出 したく苦労しております Countif関数の複数設定が出来ればいいのですが方法が解りません。 ご存知の方が居られましたら宜しくお願いします。

  • エクセルでフィルタ後の条件付き個数のカウント

    いつもお世話になっております。 エクセル(2007)で作成した表をフィルタ後に条件に合致する個数をカウントする方法を教えてください。 (例) A列:名前 B列:出身県のデータがあったとします。 名前でフィルタをかけた後、出身県ごとのカウントを行いたいのですが、条件が無い場合のデータ個数はSUBTOTAL関数を使えばOKなのはわかります。 COUNTIFS関数を使うと、フィルタで隠れた行のデータまでカウントしていまいます。 ピボットを使う(使い方がイマイチわかりませんが・・・)という方法もあると思いますが、今回は同一シート無いに関数でカウントしたいのです。 どなたかよろしくお願いいたします。

  • 行を飛ばして検索条件にあう個数を数えたい

    次の表のように 1、2、4、5行 のみの ○ の個数を数えようと COUNTIF関数を使ってみますが上手くいきません。教えて下さい。        A   B   C   1    ○   ○  ×   2    ×   ○  ○   3    ○   ×  ○   4    ○   ○  ×   5    ×   ○  ○   6    ○   ×  ×    

  • Excel 関数でcountifの複数条件

    Excelで条件にあった個数をカウントする関数はcountifですが、 複数の条件にあった個数をカウントする場合、countifの式はどうすればよいのでしょうか。 例えば A列の1行から20行で"○"が入っている個数のカウントは =countif(a1:a20,"○")ですが A列の1行から20行で"○"が入っていて、なおかつ B列の1行から20行に"1"が入っている個数のカウントを知りたいです。 =countif(a1:a20,"○")and(b1:b20,"1")ではないですよね。 よろしくご教授願います。

  • エクセルで文字列の個数を数える

    ある範囲のエクセルデータから決まった文字列の個数をカウントする関数の使い方が判れば教えてください。 例えば、A1からH200までのデータより、”リンゴ”という文字列が何個あるかカウントしたいのですが。 COUNTIF(A1:H200,"*リンゴ*")とすると”リンゴ”という文字列が含まれるセルの個数は出たのですが、”リンゴ”という文字列が複数含まれるセルもあるので、”リンゴ”という文字列の個数とは 一致しないようなのです。 どなたか、よろしくお願いします。

  • VBA 右へ1セルずつ色塗りするには 

    再質問です。 VBAでの色塗りに苦戦しています。 例えば、B列とD列にランダムに下記(1)~(7)の文字列が配列しています。 COUNTIF関数によって それぞれの文字列の数をカウントします。 (1)みかん  3 (2)サイダー 2 (3)いちご   6  (4)キウイ   8 (5)なし    1 (6)ぶどう   4 (7)チョコ   3 文字列の数によって、1セルずつ右に色塗りをしたいのです。 出発点、色は下記の通り、H列からBA列で色塗り終了です。 入力によって色塗りはどんどん右にのびていくことになりますが BA列に到達してからは、それ以上入力しても反映させません。 (1)みかん  →H列11行目、黄色 (2)サイダー →H列12行目、水色 (3)トマト   →H列13行目、赤色 (4)キウイ  →H列14行目、緑色 (5)なし   →H列15行目、白色 (6)ぶどう  →H列16行目、紫色 (7)チョコ  →H列17行目、茶色 以上、よろしくお願いします。

  • エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい

    エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい 実は先に同様の質問をしてご回答を頂きましたが、やりたかったことがうまく質問できていなかったので再度質問させていただきます。 自分で考える能力が無いものですみません(._.)。 テーマはゴルフのスコア分析とお考え下さい。1行目が各ホールのパーの数字、2行目がそれに対応するスコアが入っているというデータがあります。 Par---- 4 4 3 5 4 ・・・ Score-- 5 4 5 4 4 ・・・ このような感じです。 このデータで、Parが4のホールで、4で上がった数(パーを取った個数)を集計する方法が分かりません。同様に、Parが4のホールで、3(バーディ)を取った数(個数)も集計したいのです。countif関数ではpar4のホールの数を数えることができますが、その中でパーやバーディやボギーで上がった個数をそれぞれ取りたいのです。 DCOUNTでは、列の見出しが無いのでうまく作動してくれません。どうも、行と列が逆のようです。1ラウンドのデータが2行に分かれていて、1行目がパー、2行目がスコアという形になっているので、このデータの行と列を入れ替えるという作業は避けたいのです。 エクセル関数初心者にご指導をよろしくお願いします。

専門家に質問してみよう