• ベストアンサー

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を。