- ベストアンサー
エクセルのDCOUNTA関数
エクセルのDCOUNTA関数でCriteriaに 例えばPと設定して Pと入力してあるセルのみ対象にしたいのですが 実際はPCと入力されてるセルも対象になってしまうようです。 どうすればPのみのセルを対象にすることができますか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。Wendy02 です。 返事が遅くなってすまみせん。 >A列から水を選んで >その中でC列が空白でない個数を >カウントしたいのですが >どのように設定すればいいでしょうか? =SUMPRODUCT(($A$2:$A$6="水")*($C$2:$C$6<>"")) このような考え方でよいはずです。 なお、*1 が入っていないのは、条件式は、演算をすると、それが数値に換わる性質があります。 False =0, True =1 です。
その他の回答 (8)
- Wendy02
- ベストアンサー率57% (3570/6232)
rakuten55 さん、こんにちは。 データベース関数が使えないのは残念ですが、それは良かったです。 こちらも、ほっとしています。 それから、長引かせてすみませんね。なんとか、データベース関数で完成したいという、こちらの気持ちもありましたもので。 それに、(LEFT(N2:N60,2)="16")*1 としたら、ワイルドカードも利きますね。 配列確定(Ctrl+Shift + Enter)をする方式と、Sumproduct を使う方法とでは、圧倒的に、Sumproduct の計算スピードが速いようです。便利な関数ですね。
補足
こんにちは。 すいませんが、現在作成中の表で もうひとつ設定したい関数があるので 教えていただきたいのですが・・・ ANo.7の表でA列から水を選んで その中でC列が空白でない個数を カウントしたいのですが どのように設定すればいいでしょうか?
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >漢字と数字が含まれると >どうも正しくカウントされないようです。 おっしゃるようなことは以下のようなことだと思いますが、こちらでは、1個しかヒットしません。4行目も該当するということでしょうか?再現性がありません。どのようなことをおっしゃっているのでしょうか? A B C ------------------------- 1 A B C 2 水 16/1 ○ 3 12 16/2 ○ 4 水2 16/3 ○ 5 山 16/4 ○ 6 12水 16/5 ○ Criteria L M N ---------------------- 1 A A B 2 水 <>水? 16* =DCOUNTA(A1:C6,C1,L1:N2) この式の答えは 「1」 です。 注:Criteria は、空白行を入れてはいけません。 あまり、これ以上、てこずるようでしたら、配列数式で検索したほうがよいかと思います。 サンプル: =SUMPRODUCT(($A$2:$A$6="水")*(LEFT($B$2:$B$6,2)="16")+($A$2:$A$6="水")*(LEFT($B$2:$B$6,2)="17")) 配列数式は、ワイルドカードが通常は出来ませんが、単独の文字検索には優れています。
お礼
こんにちは。 回答ありがとうございました。 結局DCOUNTAではうまくいかないので SUMPRODUCTで次の式で設定したらうまくいきました。 =SUMPRODUCT((J2:J60="水")*1,((LEFT(N2:N60,2)="16")*1))+SUMPRODUCT((J2:J60="水")*1,((LEFT(N2:N60,2)="17")*1)) どうも大変ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
そもそもDCount関数(Aつきとつかないものがある)のCriteriaは文字列を指定することをよく考えていたか疑問です。 ほとんどの例題は数字ばかりのセル群を対象とし、(この場合は空白セルを含めるかどうかは重大問題)>10、<10、=10などが載っています。 Pと入力してあるセルを勘定するなら、=COUNTIFの文字列版でよいのでは。=COUNTIF(A1:C4,"p")。 なぜDCOUNT関数、かつAつきなのか疑問あり。Pが入っておれば空白ではありえないわけだし。
補足
回答ありがとうございます。 カウント対象の列は数字もあれば漢字もあります。 その中で空白でないセルの個数をカウントしたいのです。 その他の検索条件として 16年、17年、18年とあるうち 16年と17年のみを拾いたいので DCOUNTAを使用しました。 あとはANo.5の補足を参照していただければ幸いです。 どうぞよろしくお願いします。
- Wendy02
- ベストアンサー率57% (3570/6232)
rakuten55 さん、こんばんは。 Wendy02 です。 ほんとうに、この件は、ややこしいですね。 >この設定の中の<> ?の記号の意味は何なんでしょうか? 今、私も気になって、ヘルプファイル全体の文字検索をしてみましたが、データベース関数の説明ではなく、比較検索条件の種類/[フィルタ オプションの設定] 「*,?」のワイルドカード文字と同じだと思います。「<>」 は、比較演算子といいます。 A A B P <>P? 16* P <>P? 17* P <>P? 「P」を含んで、「Pに何かついている文字」ではない、ということです。 * は、任意の文字が、0 文字以上ということです。 ? は、任意の文字が、1 文字ということです。 <> は、その文字ではない、ということです。 >本来の数字よりも大きな数字が表示されてしまいました。 確か、それは、年度の数字ですよね。 ということは、 A A B P <>P? 16/ P <>P? 17/ でもよいはずですが、大きな数字というのは、どういう数字ですか?検索で出てきたのは、「18」 とかでありませんよね。どのような数字ですか?
補足
こんにちは。 回答ありがとうございます。 実際の表ではPと入れてある列には 漢字と数字も入っているのです。 カウント対象としたいセルが(例えば水)で <>水?と設定すると 水Mと入っているセルはカウント対象外になりますが 数字が入っているセルと漢字が入っているセルは カウント対象になってしまいました。 確かに英字のみの表では <>P? の設定で 正しくカウントするようですが 漢字と数字が含まれると どうも正しくカウントされないようです。 本来の数字よりも大きな数字というのは こういうことです。 どうぞよろしくお願いします。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 Excelの2002 だけが、「*」のワイルドカードが有効です。だから、バージョンを示してくれないと、正確なところはわからないのですが、 >Pと入力してあるセルのみ対象にしたいのですが 2002 以外では、以下のようになると思います。 Criteria は、L1:N3 L M N -------------------- A A B P <>P? 16* P <>P? 17* 註: <>P? は、Pの始まる二文字ではない、ということ。 なぜ、16,17をワイルドカードを付けなくてはならないかは、おそらく、数値をそのまま入れると、数値として扱うからだと思います。 Excel 2002では、 Criteria は、L1:M3 L M ---------------- A B P 16* P 17* ということになるはずです。 試してみてください。 本来は、2002 の仕様が正しいはずなんですが、戻してしまったようですね。
補足
エクセルのバージョンは2003です。 確かにこの表では<>P?と設定すると 正しい数字が表示されました。 ただ、本来作成している表では 本来の数字よりも大きな数字が表示されてしまいました。 この設定の中の<> ?の 記号の意味は何なんでしょうか? 参考URLも見ましたが この記号そのものの説明はなかったようです。 すいませんがよろしくお願いします。
databeseが1行目からなのでは? 1行目を項目名にしてみてください =DCOUNTA(A1:C6,C1,L1:M3) A B C 1 b c d 2 p 16/4 ● 3 pc 17/4 ● 4 p 14/2 ● 5 p 16/7 ● 6 pc 17/8 ● L M 1 b c 2 p 16* 3 p 17*
- yoshimi1968
- ベストアンサー率35% (18/51)
こんにちは。 データベース関数のCriteriaについては、後ろにワイルドカードをつけてしまう仕様なんですね。 (解除する方法、私の知識では探せませんでした。) もう一列フィールドを増やして =A1&A1 とします。 こうするとPはPP、PCはPCPCとなりますから、あとは CriteriaでPPを指定してやってはどうでしょうか。 あと、オートフィルターでは、PとPCは別物として扱いますから、数を数えたいのであれば、ウィンドウ右下のオートカルクエリアを「データの個数」にしておけばマウスでドラッグするだけで、個数を表示することは出来ますね。
DCOUNTA(Database,フィールド,Criteria) の実際の値(もしくは、それに近い)を Database構成も含め教えてください。
補足
A B C L M N 1 P 16/1 ○ A B C 2 PC 17/2 ○ P 16* 3 P 14/2 ○ P 17* 4 P 16/7 ○ 5 PC 17/8 ○ という表があったとします。 (実際の表はもっと複雑ですが) ここからA列がPでB列が16年と17年である C列の個数をカウントしたいのです。 関数式は=DCOUNTA(A1:C5,C1,L1:N3) と設定しました。 すると個数は本来は2個のはずですが 4個になってしまいます。
お礼
回答ありがとうございました。 返事が遅くなりすいません(^_^.) 回答の式、使わせてもらいました。 大変助かりました。 今後ともどうぞよろしくお願いします。(^^)