• ベストアンサー
  • すぐに回答を!

エクセルのDCOUNTA関数

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

共感・応援の気持ちを伝えよう!

  • 回答数9
  • 閲覧数492
  • ありがとう数3

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

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • DCOUNTA関数のCriteriaに「数値が入っているセル」という条件を指定したい。

    DCOUNTA関数の第3引数(Criteria)に指定する条件に、「数値が入っているセル」という条件を指定する方法を教えてください。 なお、検索対象となるセルには、「空白(何も入力なし)」か「数値」しか入りません。

  • DCOUNTAのCriteriaにTODAY関数を入れたいのですが入りません。使える方法はありませんか?

    DCOUNTAについて CriteriaにTODAY関数は使えませんか? ダブルコーテーションなどを付けてみましたができませんでした。 別にTODAY関数を入れたセルを使って、参照することもできないし… いい方法がありましたら教えてください お願いします

  • EXCELのデータベース関数について(DCOUNTA?)

    EXCELのデータベース関数について(DCOUNTA?) 住所録を作成していますが、ポイントは3点あります。 (1)1年間に入社した人(雇用形態)毎に人数を求めたいのです。 (2)今年度中に退職した方は残したままで、人数を計算したいのです。(退職日を入力) (3)今年度は人が増えるため、全体をテーブルとし、雇用者1人事をレコードとして処理していますが、そのためCOUNTIFSなどは用いず、簡単に計算するためデータベース関数を利用したいと考えています。 DCOUNAの関数は(Database,フィールド,Criteria)となりますが、Criteriaの条件を雇用形態と退職日を横に並べた値としたいが、退職日を空白の人を人数としたい為、空白とすると条件を選んでいないとして雇用形態のみ合致した人数をカウントしてしまうようです。 良い方法あればご教示ください。

その他の回答 (8)

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.7
  • 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)) どうも大変ありがとうございました。

  • 回答No.6
  • imogasi
  • ベストアンサー率27% (4583/16412)

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.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? の設定で 正しくカウントするようですが 漢字と数字が含まれると どうも正しくカウントされないようです。 本来の数字よりも大きな数字というのは こういうことです。 どうぞよろしくお願いします。

  • 回答No.4
  • 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 の仕様が正しいはずなんですが、戻してしまったようですね。

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.3
noname#11836

databeseが1行目からなのでは? 1行目を項目名にしてみてください =DCOUNTA(A1:C6,C1,L1:M3) ABC 1 bcd 2 p16/4● 3 pc17/4● 4 p14/2● 5 p16/7● 6 pc17/8● LM 1 bc 2 p16* 3 p17*

共感・感謝の気持ちを伝えよう!

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

  • 回答No.1
noname#11836

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

関連するQ&A

  • DSUM関数、DCOUNTA関数について

    A&#65374;Dのエクセルファイルから必要な情報をピックアップしEを作成したいのですが、 A&#65374;Dを閉じると、Eに入れたDSUM関数とDCOUNTA関数が#VALUEになってしまいます。 どうしたらよいのでしょうか? ちなみに入力したDSUM関数(テーブル使用)は、 =DSUM('[A.xls]1311'!$A$31:$L$300,'[A.xls]1311'!$H$31,I3:J4)です。 ※DCOUNTAも同様です。 自身でいろいろ調べてみましたが、いまいち分からずお手上げです。 よろしくお願い致します。

  • エクセルのDCOUNTA関数について

    今晩は。 エクセルにはDCOUNT、とDCOUNTA関数の両方がありますがどう違うのですか、教えてください。 宜しくお願いします。

  • DCOUNTA関数で複数範囲を選択する

    DCOUNTA関数で複数のデータ範囲を対象とする場合、それぞれ別個にDCOUNTA関数で値を出して合算する、という方法ならできたのですが、 複数の範囲に名前を設定して一個の関数だけで算出しようとしたら、できませんでした。 例)できたやり方   =DCOUNTA(B2:D52,"氏名",V2:W3)+DCOUNTA(F2:H52,"氏名",V2:W3) 例)できなかったやり方   名前の定義で参照範囲      =B2:D52,F2:H52   にデータ範囲という名前を付けて、   =DCOUNTA(データ範囲,"氏名",V2:W3) 名前の定義の方法が違うのか、DCOUNTAで複数範囲を対象とすることができないのか、何が悪いのでしょうか?

  • DCOUNT関数とDCOUNTA関数の違い

    DCOUNT関数とDCOUNTA関数の内容の違いがよくわかりません。前者が「数値の個数」で後者が「データの個数」であることは、わかります。 しかし、実際にやってみるとどちらを使えばよいのかわからなくなってきます。使用する何を基準にすればよいのでしょうか?

  • Excel DSUM DCOUNTA関数の使い方

    こんにちは。 Excel2003でDSUM DCOUNTA関数を使用しています。 ある範囲の中から文字列が何個あるか計算します。 この関数の場合たとえば shouhin2000とshouhin3000は別物としてカウントされるので問題はありません。 しかし shouhin2000とshouhin2000+は区別されずにまとめて何個あるかカウントされてしまいます。 この場合区別してshouhin2000とshouhin2000+を別々にカウントする方法はありますか? また上記の逆で shouhin2000とshouhin3000をまとめて何個あるかカウントする方法はありますか? 特にDSUM DCOUNTA関数にこだわっていませんが前任者が作ったファイルを 改造しているためでてきた問題です。 ご存じの方お教えください。 よろしくお願いいたします。

  • ExcelのDcouta関数について

    エクセルのデータベース関数Dcountaについて、 大変困っています。 まず、次のようなデータベースがあります。 仕入先・商品名・値段・入庫数 そして、Dcountaで例えば、入庫数が15以上で 商品名がofficeというデータを数えたいのです。 しかし、データの中には、office2という商品も あるのです。そうすると、officeだけ、数えたいのに office2までも、数えてしまいます。 これは、もう、しょうがないのでしょうか? 私の設定の仕方が悪いのでしょうか? どうぞ、よろしくお願いします。

  • DCOUNTA エクセル2003

    会社でエクセル2003を使っています。 データリストは A列  B列  C列  D列  E列  F列 リストNo. 名前 会員ランク 年齢 性別 住所 と入力しています。 DCOUNTA 使って、条件別の件数を出したいと思っています。 DCOUNTA(A1:F51,B1,H1:M2) の条件式であれば、それぞれいろいろな条件で件数が出せるのですが、 DCOUNTA(A1:F51,B1,H1:M5)として、例えば、C列のランクを「ゴールド会員」と「シルバー会員」の同じ項目の複数の種類を出したい場合、まったく条件式が機能しません。 DCOUNTAは使えないのでしょうか? なにとぞよろしくお願いします。 画像を添付してみました 上のセル番号と添付画像のセル番号が違うのですが…お許しください。 見えにくいのもお許しください

  • EXCELの関数について教えてください。

    EXCELの関数について教えてください。 A列のセルに「18:00 」or 「18:30」 or「19:00」 or「19:30」と入力するとB列のセルに「8:00」と表示され、「17:30」と入力すると「7:00」と表示される方法を教えてください。 セルの書式の表示形式は「文字列」ではなく「時刻」に設定したいです。 多分IF関数をつかうを使うのではないかと思うのですが、書式が「時刻」のためかうまくいきません。 よろしくお願いします。

  • エクセルの関数を教えてください

    エクセルの関数を教えてください。 あるセル(列単位です)に数字8ケタが入っていたら隣のセル(列)に◎◎◎(任意に設定)と表示されて、なにも入力されていなかったら空白表示にしたいのですがどうすればいいでしょうか?

  • エクセル関数について

    エクセル関数について質問です。 セルA1、セルA3、セルA5のいずれかに入力された値をセルB1に返すことは関数で可能でしょうか? 可能であれば、IFERROR関数と組み合わせ、エラー値が返らないようしたいです。 エクセルバージョンは2007です。 ご教示ください。よろしくお願いします。