• ベストアンサー

エクセルのDCOUNTA関数

エクセルのDCOUNTA関数でCriteriaに 例えばPと設定して Pと入力してあるセルのみ対象にしたいのですが 実際はPCと入力されてるセルも対象になってしまうようです。 どうすればPのみのセルを対象にすることができますか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.9

こんばんは。Wendy02 です。 返事が遅くなってすまみせん。 >A列から水を選んで >その中でC列が空白でない個数を >カウントしたいのですが >どのように設定すればいいでしょうか? =SUMPRODUCT(($A$2:$A$6="水")*($C$2:$C$6<>"")) このような考え方でよいはずです。 なお、*1 が入っていないのは、条件式は、演算をすると、それが数値に換わる性質があります。 False =0, True =1 です。

rakuten55
質問者

お礼

回答ありがとうございました。 返事が遅くなりすいません(^_^.) 回答の式、使わせてもらいました。 大変助かりました。 今後ともどうぞよろしくお願いします。(^^)

その他の回答 (8)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

rakuten55 さん、こんにちは。 データベース関数が使えないのは残念ですが、それは良かったです。 こちらも、ほっとしています。 それから、長引かせてすみませんね。なんとか、データベース関数で完成したいという、こちらの気持ちもありましたもので。 それに、(LEFT(N2:N60,2)="16")*1 としたら、ワイルドカードも利きますね。 配列確定(Ctrl+Shift + Enter)をする方式と、Sumproduct を使う方法とでは、圧倒的に、Sumproduct の計算スピードが速いようです。便利な関数ですね。

rakuten55
質問者

補足

こんにちは。 すいませんが、現在作成中の表で もうひとつ設定したい関数があるので 教えていただきたいのですが・・・ ANo.7の表でA列から水を選んで その中でC列が空白でない個数を カウントしたいのですが どのように設定すればいいでしょうか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 >漢字と数字が含まれると >どうも正しくカウントされないようです。 おっしゃるようなことは以下のようなことだと思いますが、こちらでは、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")) 配列数式は、ワイルドカードが通常は出来ませんが、単独の文字検索には優れています。

rakuten55
質問者

お礼

こんにちは。 回答ありがとうございました。 結局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)
回答No.6

そもそもDCount関数(Aつきとつかないものがある)のCriteriaは文字列を指定することをよく考えていたか疑問です。 ほとんどの例題は数字ばかりのセル群を対象とし、(この場合は空白セルを含めるかどうかは重大問題)>10、<10、=10などが載っています。 Pと入力してあるセルを勘定するなら、=COUNTIFの文字列版でよいのでは。=COUNTIF(A1:C4,"p")。 なぜDCOUNT関数、かつAつきなのか疑問あり。Pが入っておれば空白ではありえないわけだし。

rakuten55
質問者

補足

回答ありがとうございます。 カウント対象の列は数字もあれば漢字もあります。 その中で空白でないセルの個数をカウントしたいのです。 その他の検索条件として 16年、17年、18年とあるうち 16年と17年のみを拾いたいので DCOUNTAを使用しました。 あとはANo.5の補足を参照していただければ幸いです。 どうぞよろしくお願いします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

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」 とかでありませんよね。どのような数字ですか?

rakuten55
質問者

補足

こんにちは。 回答ありがとうございます。 実際の表ではPと入れてある列には 漢字と数字も入っているのです。 カウント対象としたいセルが(例えば水)で <>水?と設定すると 水Mと入っているセルはカウント対象外になりますが 数字が入っているセルと漢字が入っているセルは カウント対象になってしまいました。 確かに英字のみの表では <>P? の設定で 正しくカウントするようですが 漢字と数字が含まれると どうも正しくカウントされないようです。 本来の数字よりも大きな数字というのは こういうことです。 どうぞよろしくお願いします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 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 の仕様が正しいはずなんですが、戻してしまったようですね。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;418595
rakuten55
質問者

補足

エクセルのバージョンは2003です。 確かにこの表では<>P?と設定すると 正しい数字が表示されました。 ただ、本来作成している表では 本来の数字よりも大きな数字が表示されてしまいました。 この設定の中の<> ?の 記号の意味は何なんでしょうか? 参考URLも見ましたが この記号そのものの説明はなかったようです。 すいませんがよろしくお願いします。

noname#11836
noname#11836
回答No.3

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*

回答No.2

こんにちは。 データベース関数のCriteriaについては、後ろにワイルドカードをつけてしまう仕様なんですね。 (解除する方法、私の知識では探せませんでした。) もう一列フィールドを増やして =A1&A1 とします。 こうするとPはPP、PCはPCPCとなりますから、あとは CriteriaでPPを指定してやってはどうでしょうか。 あと、オートフィルターでは、PとPCは別物として扱いますから、数を数えたいのであれば、ウィンドウ右下のオートカルクエリアを「データの個数」にしておけばマウスでドラッグするだけで、個数を表示することは出来ますね。

noname#11836
noname#11836
回答No.1

DCOUNTA(Database,フィールド,Criteria) の実際の値(もしくは、それに近い)を Database構成も含め教えてください。

rakuten55
質問者

補足

 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個になってしまいます。

関連するQ&A