-PR-
解決
済み

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

  • 困ってます
  • 質問No.81039
  • 閲覧数1727
  • ありがとう数12
  • 気になる数0
  • 回答数14
  • コメント数0

お礼率 50% (7/14)

2つ以上の条件を満たす個数を数えたいのですがうまくいきません。
例えば

  A列    B列   C列
1 りんご  トマト  赤色
2 りんご  きゅうり 緑色
3 りんご  きゅうり 赤色
4 ぶどう  トマト  赤色
5 ぶどう  きゅうり 緑色
6 りんご  トマト  緑色
7 ぶどう  きゅうり 赤色

という表があった時に、「りんご」でもあり「トマト」でもある数は
1行目と6行目の2個である、という計算です。
また同様に、「ぶどう」でも「トマト」でも「赤色」でもある、等
条件が3つになる場合もあります。
COUNTIF関数で出るかと思いましたが、それぞれの列の個数は求められても
2列以上条件をつけるやり方がわかりません。

よろしくお願いします。
通報する
  • 回答数14
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.8
レベル11

ベストアンサー率 42% (91/216)

補足
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

お礼率 50% (7/14)

まとめてこちらへのお礼で申し訳ありません。
すごく参考になりました。ありがとうございました。

そうですね、データ入力している1枚目のシートに条件等多数作るのも
作業がしにくいですね。
sheet2に条件だけわけてしまえば、見た目もわかりやすくなるし。

DCOUNTA関数で、かなりの問題は解決したのですが、もうひとつよろしいでしょうか?

一覧から2つの条件から抽出したものから、ある条件のもの引いた数を求めたいのですが。
#「りんご」で「トマト」の条件にあったもので「赤色」以外のもの。
#ただし、「色」について入力してあるセルはまばらであり(空白セルがある)、
#「りんご」で「トマト」でも色が空白のものは含めない。

Sheet2に条件を入力するとして、
 A1    B1    C1
りんご  トマト
りんご  トマト   赤色   として、

=DCOUNTA(Sheet!A1:C8,1,A1:B2)-DCOUNTA(Sheet1!A1:C8,1,A1:C2)

にすると、色の列が空白のものも計算されてしまい、困ってしまいました。
また、同じ条件で空白の個数を求めることができるでしょうか?

よろしければ、アドバイスお願いします。
投稿日時 - 2001-05-26 02:09:00
-PR-
-PR-

その他の回答 (全13件)

  • 回答No.4
レベル11

ベストアンサー率 42% (91/216)

1  A列    B列   C列 2 りんご  トマト  赤色 3 4  A列    B列   C列 5 りんご  トマト  赤色 6 りんご  きゅうり 緑色 7 りんご  きゅうり 赤色 8 ぶどう  トマト  赤色 9 ぶどう  きゅうり 緑色 10 りんご  トマト  緑色 11 ぶどう  きゅうり 赤色 として(A2、B2、C2は条件指定セル) 適 ...続きを読む
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を。


  • 回答No.5
レベル14

ベストアンサー率 34% (664/1947)

No.1のsydneyhです。補足に対してお応えします。 やはりこの場合、No.2の方の言う通りAccessを使うと簡単に楽に作成できるでしょう。Accessは何もそんなに難しくありません。この計算の場合Excelとあまり違いはありません。 やり方を細かく説明するととんでもなく文字数を使いそうなので簡単に言います。○Excelから該当の表があるファイルをAccessへインポートし、一つの「テー ...続きを読む
No.1のsydneyhです。補足に対してお応えします。

やはりこの場合、No.2の方の言う通りAccessを使うと簡単に楽に作成できるでしょう。Accessは何もそんなに難しくありません。この計算の場合Excelとあまり違いはありません。

やり方を細かく説明するととんでもなく文字数を使いそうなので簡単に言います。○Excelから該当の表があるファイルをAccessへインポートし、一つの「テーブル」を作ります。
○それを会議用に使いやすくするため、更に「クエリ」として抽出すると、テーブルとクエリはリンクされていますので、テーブルが常に更新しても、それがクエリ上に反映されます。
※インポートする時にExcelとリンクさせるというのを選択すると、通常はExcelで入力し、その会議用資料をつくる時のみAccessで加工するというやり方もできます。

Excelの方が使い慣れていて利用したくなる気持ちも分かりますが、業務を早く楽にするためには、少しの努力が必要だと思います。何よりこれからいくらでも応用がきくようになるでしょう。vie511さんのスキルもアップしますよ。

至急やらなくてはいけない作業でもないようですし、上記に述べたやり方はどのマニュアル本でも詳しく載っていますので、確認してぜひ試してみて下さい。
お礼コメント
vie511

お礼率 50% (7/14)

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

アドバイス、本当にありがとうございました。
投稿日時 - 2001-05-26 01:30:12
  • 回答No.3
レベル8

ベストアンサー率 50% (16/32)

A列の条件をA9、B列の条件をB9、C列の条件をC9に設定するものとして D1に以下の内容を入力し、上の例の場合でしたらそれをD7までコピーし "=sum(D1:D7)" として個数を求めては? (各列の条件がない場合にはA9等をブランクにします。) =IF(ISBLANK($A$9),1,A1=$A$9)*IF(ISBLANK($B$9),1,B1=$B$9)*IF(IS ...続きを読む
A列の条件をA9、B列の条件をB9、C列の条件をC9に設定するものとして
D1に以下の内容を入力し、上の例の場合でしたらそれをD7までコピーし
"=sum(D1:D7)" として個数を求めては?
(各列の条件がない場合にはA9等をブランクにします。)

=IF(ISBLANK($A$9),1,A1=$A$9)*IF(ISBLANK($B$9),1,B1=$B$9)*IF(ISBLANK($C$9),1,C1=$C$9)
補足コメント
vie511

お礼率 50% (7/14)

ありがとうございます!
やってみましたら、個数が出ました!
ただ、なぜ答えがでたのか、よくわかっていません(汗)
ISBLANKは、空白セルを返す関数…ですよね?
…すみません、勉強します。

今回、1sheetのデータから、4種類くらいの条件を組み合わせること、
条件そのものが1列の中に多数あること
また、その条件を指定する列に空白のセルを持つ列などが混在しており
複雑さに頭を痛めていますが、空白セルを持つ列でも、同じように
条件指定できるのでしょうか?

よろしければ教えてください。
投稿日時 - 2001-05-26 01:09:51
  • 回答No.2
レベル6

ベストアンサー率 40% (2/5)

accessを使うと、簡単ですよ。 ...続きを読む
accessを使うと、簡単ですよ。
補足コメント
vie511

お礼率 50% (7/14)

実は、最初アクセスに挑戦していたのですが・、初心者なもので
アクセスの機能そのものが使いこなせなくて、やっぱりエクセルで・・・となった次第です。
でも、アドバイスありがとうございました!
投稿日時 - 2001-05-25 17:00:32
  • 回答No.1
レベル14

ベストアンサー率 34% (664/1947)

関数ではありませんが、こんなやり方はどうでしょう。 ○一番左にCOUNTを計算するために「1」を入力したフラグをたてる ○オートフィルタを設定し、個数を計算したい条件を順に選択していく ○選択した条件のみが表示されたら、「1」を入力したフラグの下にSUM関数を設定する これなら複数の条件でも、何度でも個数計算できると思います。 ...続きを読む
関数ではありませんが、こんなやり方はどうでしょう。

○一番左にCOUNTを計算するために「1」を入力したフラグをたてる
○オートフィルタを設定し、個数を計算したい条件を順に選択していく
○選択した条件のみが表示されたら、「1」を入力したフラグの下にSUM関数を設定する

これなら複数の条件でも、何度でも個数計算できると思います。
補足コメント
vie511

お礼率 50% (7/14)

ありがとうございます。
ちょっと説明不足でした(汗)
実は、最初オートフィルタで計算して書き写していたのですが、何度も同じ様式を作る必要があるので、もっと簡単にできたらと思ったのです。

実は、sheet1にある一覧表があり、これにデータが20列300行ほどあります。
で、sheet2に、sheet1から抽出したデータの個数等を会議資料用に簡略にまとめたものを作りたいのです。
同じ様式で、2~3カ月に1度作成しなければならないので、sheet1のデータをもとに計算されたセルを、資料様式を作ったSheet2のそれぞれのセルにリンクさせたいと思います。

またsheet1のデータは、変更が生じます。(りんご→ぶどうになったり、赤色→緑色になったり)

説明下手で申し訳ありません。
要は元データの修正をすれば、すべての計算式にすぐ反映するようにしたいのですが、できるでしょうか?
どうぞ、よろしくお願いします。
投稿日時 - 2001-05-25 16:49:08
  • 回答No.6

こんにちは DCOUNTA関数を使ってみるとよいのではないでしょうか? フィールド名を1行目につける必要がありますが・・・。 たとえば    A    B    C    D    E   種類1  種類2   色 1 りんご  トマト  赤色   種類1  種類2    2 りんご  きゅうり 緑色   りんご  トマト 3 りんご  きゅうり 赤色 4 ぶどう  トマト   ...続きを読む
こんにちは
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

お礼率 50% (7/14)

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

もしよろしければ、アドバイスお願いします。

ありがとうございました。
投稿日時 - 2001-05-26 01:56:19
  • 回答No.7
レベル11

ベストアンサー率 42% (91/216)

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

ベストアンサー率 42% (91/216)

=DCOUNTA(Sheet!A1:C8,1,A1:B2)-DCOUNTA(Sheet1!A1:C8,1,A1:C2) だと条件の指定する行が2行になってしまいます。 りんご  トマト 又は りんご  トマト  赤色 である個数とかになるのでは? りんご  トマト スペースの個数‐ りんご  トマト  赤色 の個数を 求めたいのであれば(1、3は項目名)  1  A列    B列   C列 ...続きを読む
=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

お礼率 50% (7/14)

>=DCOUNTA(Sheet!A1:C8,1,A1:B2)-DCOUNTA(Sheet1!A1:C8,1,A1:C2)
>だと条件の指定する行が2行になってしまいます

そのとおりでした(汗)
項目名は、複数の条件がある場合、それぞれに設定しないと
いけないのですね。勉強になりました。

>スペースを条件として指定すればOKでは?
できました!
これでやりたかったことが出来るようになりました!!
本当にありがとうございました!
投稿日時 - 2001-05-26 22:38:58
  • 回答No.13
レベル11

ベストアンサー率 42% (91/216)

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

調べるスペースが複数列にまたがるのであれば
=COUNTIF(Sheet1!A2:C8," ")

■スペースは半角、全角を統一してないと抽出できませんから注意
  • 回答No.11
レベル13

ベストアンサー率 68% (791/1163)

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

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

お礼率 50% (7/14)

すみません!
再度やってみたら、うまく計算されました!
どうやら、何か打ち間違っていた様です(汗)
ありがとうございました!
投稿日時 - 2001-05-26 22:29:23
13件中 1~10件目を表示
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ