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

DCOUNT関数がなぜかカウントしない

DCOUNT関数を使って顧客のデータから来店回数を抽出しようとしているのですが、エラーは出ないのですが、なぜかどの客も来店回数が0なのです。 顧客データがにはちゃんと来店日、売上などがかいていあるのですけど… DCOUNT関数のdatabaseに顧客の全データ(顧客の来店などのデーターを含む)のシート全体を指定して、フィールドに「ID番号」(顧客の)の列を指定して、クリテリアには集計するID番号の顧客ID番号を入力しています。 数字は出てくるんですが、どの顧客も来店回数0です。 エクセル2000を使っています。 なぜ、うまく計算されないのかさっぱり分かりません。 よろしくお願いします。

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

  • 回答数4
  • 閲覧数1869
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.3

#1および#2さんの回答どおり、DCOUNT関数は、数値をカウントする関数ですのでうまくいかないと思います。 補足の条件でデータを作って、DCOUNTA関数でやっていみましたらうまくいきました。 (DCOUNT関数ではうまくカウントしません) ただし、空白でないセルの個数のカウントですので、数値も文字もカウントしますが。 もう一度、DCOUNTA関数でチャレンジしてみてください。

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

質問者からのお礼

お返事ありがとうございます。 DCOUNTA関数を使ってみたところ、うまくできたようです。 ありがとうございました。

関連するQ&A

  • Access:Dcount関数

    Access:Dcount関数 の使用方法について質問です。 テーブル作成クエリで新規フィールドに通し番号として新たに連番を打ちたいのですが、 No: DCount("番号","情報一覧","[番号]<=" & [情報一覧]![番号]) このようにした場合に結果は10,13,15,19のようにとびとびの番号しか出てきませんでした。 関数を誤って理解してるものとは思うのですがどうおかしいのかがよくわからず; 「番号」は連番ではなく、重複ないIDです。 よろしく御教授ください。

  • 【Access】Dcountの利用方法

    いつもお世話になっています。 今回もまた詰まってしまったのでアドバイスを頂にあがりました。 テーブルA フィールド ID|レベル1|レベル2|レベル3|程度        1|ミス  |人為的 |うっかり|低        2|ミス  |人為的 |見過ごし|低        3|トラブル|顧客  |対応ミス|低        4|ミス  |人為的 |うっかり|低        5|トラブル|社内  |連絡ミス|中 こういったテーブルがあります。(簡略化) これらを一覧表内に[程度]ごとに集計したいと思いDcount関数を利用してみようとしてました。 表現したい表形式は・・・               |(程度) | レベル1|レベル2|レベル3|低|中|高| ミス  |人為的 |うっかり|2|0|0|     |    |見過ごし|1|0|0| トラブル|顧客  |対応ミス|1|0|0|     |社内  |連絡ミス|0|1|0| 最初はテーブルに直接表現するときに 低のフィールドには =DCount("[レベル3]&[程度]","テーブルA","[レベル3]&[程度]=[レベル3]&'低'") 中のフィールドには 上記の'低'を中に変えて計算できる・・・ と思っていたのですがレベル3のフィールドをレポート上ではそれぞれで識別できないようで 極端な話ですが =DCount("[レベル3]&[程度]","テーブルA","[レベル3]&[程度]='うっかり低'") と・・・各項目ごとに作っていくと恐らくうまくいくと思うのですが、なにぶん項目が多いのとレベル3に関しては今後項目が増えていく予定です。 それにも対応できるようにしたいと思っているのですが 私の知識では詰まってしまいました・・・ アドバイスを頂けます様よろしくお願いいたします。

  • アクセスで、条件を付けてカウントしたいです。

    アクセスで、条件を付けてカウントしたいです。 前回こちらで助けていただきました。 http://okwave.jp/qa/q5906286.html おかげで、ほしかったデータベースを作ることができとても感謝しております。 今回、そのデータベースを使い集計している最中に戸惑ってしまう点があり 再度質問させていただきます。 できあがったデータは、添付の画像のようになっています。 そこから来店回数ごとに○×をカウントしたいです。 たとえば、 1回の来店者でAの購入者は5人、Bの購入者は6人、Cの購入者は3人 といったように、一つのクエリで作成したいです。 http://mar1224.fc2web.com/site/access_index03.html こちらのように集計をカウントにして、○×の個数を出すことはできたのですが 一回の集計で複数の商品の購入の有無をデータ化することができませんでした。 目指すものとしては下記のようなデータにしたいです。 来店回数     A購入     B購入     C購入     D購入  1回      80人      90人      53人     24人        2回      70人      100人      74人     55人   3回      93人      44人      42人     77人   4回      55人      63人      23人     66人   5回      80人      90人      53人     24人   6回      80人      440人      52人     24人  Dcount関数を使ってみたのですが うまくいきませんでした。 ちなみに使った式としては A購入= DCount("名前", "3月の来店者データ", "A購入='○'") こちらにすると来店回数とうまく紐づけられませんでした。(トータルの○の個数が出てしまいます。) こちら初歩的な質問で申し訳ございませんが、 アドバイスいただけると幸いです・・・涙 よろしくおねがいいたします。

その他の回答 (3)

  • 回答No.4

#3です。 補足ですが、条件がひとつであれば、COUNTIFというのもあります。 ID番号のID050が、簡易CRMのA2にあるとして、来店回数は、 =COUNTIF(日別顧客データ!$B$2:$B$2000,$A$2) となります。 基本的に条件は一つですが、配列数式を使えば複数の条件でのカウントもできます。 (興味があれば、参考URLもご覧ください) むしろ、この関数の方が使いやすいで、お勧めです。

参考URL:
http://pc21.nikkeibp.co.jp/special/hr/

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

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

●比較する列とCriteriaにおいて、数字か文字列の問題では? (例データ) A1:B7 番号氏名 1a 2b 3c 4g 5s 6f (Criteria) 番号氏名 <6 (関数式) =DCOUNT(A1:B7,A1,E1:E2) A2:A7を数字で入れると「書式設定を文字列にしても(結果 見た目は左詰に表示される)5(<6で6を除くので5)と正しく出ました。だから書式の問題ではないのでは?。 しかし1を’1、2を’2のように値そのものを文字列化すると、今1,2を’付きに変えましたら、関数の答えは3になっています。 このケースではないでしょうか。 またA2:A7を’付きのもの(文字列)に全て変えて =DCOUNTA(A1:B7,A1,E1:E2) にして見ましたが0です(Criateriaを番号 <6または<"6"にしました。)勿論Dcountでも0。 (例データ) 番号氏名数値 1a1 2b1 3c1 6g1 5s1 6g1 と数字列Cを増やしました。 そして Criteriaを 番号 6('6と入力) 関数式 =DCOUNT(A1:C7,C1,E1:E2) で2になりました。 =DCOUNTA(A1:C7,A1,E1:E2)でも2です。 数値列Cを無視しても =DCOUNTA(A1:B7,A1,E1:E2)は2です。 第2引数「フィールド」ってどう関係するのかと思っちゃう。 ●そのほか、上例で「番号氏名」に当たる文字列と Criteriaの「番号氏名」が微妙に違う場合があるので、コピー貼りつけで、処理されることをお勧めします。 ●日付条件は入れてないでしょうね??。 エラーの原因質問には、ぜひ実例の1部を上げて欲しいですね。企業・個人の公開したくない部分があるなど判りますが、差し障りのない様に変えるなどのことは出来ませんか。

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

質問者からの補足

お返事頂きまして有難うございます。 具体的に書いたほうが分かりやすいかもしれませんね。簡単に書きますと… sheet1(簡易CRM) ID番号  ID050 来店回数 =DCOUNT(日別顧客データ!$A$1:$E$2000,日別顧客データ!$B$2,簡易CRM!$A$1:$A$2) sheet2(日別顧客データ) 日付 | ID番号 | 顧客名 | 売上額 | 感想 | 10/3 |ID050 |****** |@@@@@@ |?????? | 10/3 |ID034 |****** |@@@@@@ |?????? |  ・   ・     ・    ・     ・  ・   ・     ・    ・     ・  ・   ・     ・    ・     ・ 上の様にDCOUNT関数を入れています、sheet2(日別顧客データ)の顧客IDのセルに「ID」と数字以外のものを入れているからなのでしょうか?クライテリアに指定しているセルも「ID***」と入れいているのです。 一応日別顧客データのID番号の列をセルの書式設定で数値にしてみましたが、うまくいきません。 たびたび申し訳ないのですが、助言などありましたらよろしくお願いします。

  • 回答No.1

ID番号の欄の書式が文字列になっているのではないでしょうか。 DCOUNT関数は条件を満たすレコードのうち、数値が入力されているセルの個数を算出する関数ですから、値が文字列の場合はカウントされません。ID番号が数字だけの場合は見た目だけではわかりにくい場合もありますので、セルの書式設定で確認してみて下さい。 もし文字列になっていた場合はそれを数値とするか(ID番号が数字だけの場合)、DCOUNT関数ではなくDCOUNTA関数を使われるとうまくいくと思います。 と、想像で書きましたが、外していたらごめんなさい。 もし違っていたら、実際に入力されている数式など、もう少し具体的なところを補足してもらうと分かるかもしれません。

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

関連するQ&A

  • マクロや関数で来店管理表を作成したい。

    最終来店日別・顧客番号順の管理表を作成したいと考えております。   表1・初日データ 行番号         列番号 G       列番号 H              顧客番号       最終来店日   6          100           2011-11-09   7           30           2011-11-09   8           500           2011-11-09   9           200           2011-11-09 10 &#65374;   1000                                            表2・2日目データ 行番号         列番号 G       列番号 H              顧客番号       最終来店日   6          150            2011-11-10   7           500           2011-11-10   8           10            2011-11-10   9                  &#65374;  1000                                            表3・来店日管理表 行番号 列番号 B  列番号 E     列番号 F        顧客番号  最終来店日    来店回数   6    10      2011-11-10    1   7    150          2011-11-10   1   8     500          2011-11-10   2   9     30    2011-11-09   1   10   100      2011-11-09      1   11    200     2011-11-09      1   12      &#65374;  1000 ●〔表1〕・〔表2〕のデータから、〔表3〕のような〔来店日管理表〕の作成方法を教えてください。  1・初日 1・初日に〔表1〕のデータを〔表3〕に表示し、〔列番号 F〕に来店回数を〔1〕と表示する 2・〔最終来店日〕別・〔顧客番号順〕に表示する 3・〔表1〕のデータを消去する  2・2日目 1・〔表3〕のデータと〔表2〕のデータを統合して、初来店者は〔列番号 F〕に来店回数を           〔1〕と表示する          複数回来店者は、〔列番号 F〕に来店回数を〔前回回数+1〕して表示する 2・〔最終来店日〕別・〔顧客番号順〕に表示する 3・〔表1〕のデータを消去する 宜しくお願い致します。

  • Access Dcount関数で引数が指定できない

    ACCESSのVBAで社内システムを作っています。 Dcount関数の引数1であるフィールド名を指定すると、下記のようなエラーが出てしまいます。 「クエリ式'Count(2A)'の 構文エラー:演算子がありません。」 色々切り分けして以下のような法則を見つけました。 ・フィールド名が数字のみの場合→使用できる ・フィールド名の先頭が数字以外の場合→使用できる ・フィールド名の先頭が数字(全半角共に)の場合→エラー発生 全社システムからACCESSにインポートするデータのフィールド名が「2A」「3A」などの商品コードになっているためこのまま使用したいのですが、手段はありますでしょうか。 ■使用しているツール Microsoft Office Access 2007 よろしくお願いします。

  • Access DCOUNTの意味

    Access DCOUNTの意味 http://okwave.jp/qa/q3078359.html テーブルで重複があったものを除外したデータが欲しいと思い検索した結果上記のURLがヒットしました。 ページには、 Sum(1/DCount("*","TABLE1","ID='" & [ID] & "'")) という関数がありますが、ここの意味がわかりません。Dcountの意味は理解しました。 ただ、Sum(1/DCOUNT の意味がわかりません。 サイトに解説がかいてあるのですが・・・私には理解できません。 例えば、[ID]には001と002のIDコードがあるとします。 001には3レコード、002には2レコードあるとします。 DCOUNTで3という結果と2という結果を得られると思います。 よって、SUM(1/3 + 1/2) というように読み取れてしまいました。 上記だと2という値が取得したいのですが、私はどこを勘違いしているのでしょうか?

  • DCOUNT以外での集計方法

    こんにちは。 Excel関数についての質問です。 下記データおよび条件において、Dcount関数を 用いれば解決することはわかったのですが、 出来れば検索条件などを別表に出さずに抽出したいと 考えています。 もしご存知の方がおられましたらご教授頂けますでしょうか。 宜しくお願い致します。 ■抽出する表  -------------------  条件1 条件2  -------------------   0 3月10日   1 2月10日   2 3月5日   0 4月5日   0   ※上記のようなデータが100件程度 ■抽出条件  条件1が0かつ条件2に日付が入っていること ■補足1  Dcount関数以外では、各行ごとに判定分を入れてその結果を  集計するというやり方もありますが、上記表以外のセルは  使用しない方法を考えています。 ■補足2  Dcount時の条件  -------------------  条件1 条件2  -------------------   0 <>""

  • ACCESSで集計カウント0件の場合1と入力される

    再度質問箱に投稿します!Access2000で顧客管理をしているのですが毎日入力している顧客データーの顧客カルテNOからクエリの集計クエリで 一日の人数をカウントしているのですが、来店客が0人の時は0と入力しても1とカウントしてしまいます これを0人とカウントしないと集計結果が間違えてしまいます、どの様にすれば来店客が0人の時集計クエリで0とされるでしょうか? こんな感じです 顧客来店テーブル No カルテNO 日付 名前 etc.....でカルテNOはテキスト型で日付は日付/時刻型です 顧客来店テーブルから顧客来店日の日付別売上集計クエリに日付とカルテNOのフィールドを作って 日付をグループ化してカルテNOをカウントしています 顧客来店日の日付別売上集計クエリ  日付    カルテNO グループ化  カウント 顧客来店テーブルのカルテNOを0と入力すると 顧客来店日の日付別売上集計クエリのカルテNOのカウントで集計結果が0ではなく1と返されるのです、 前回お回答をしてもらった方法で 集計 Where条件 抽出条件 <>"0"にすると日付が無くなってしまいます これですと月の集計をした時に営業日数などが間違ってしまいます、 どの様にすればいいか解らないです、宜しくお願いします

  • ACCESS2000でDCount関数の使い方

    ACCESS2000で更新クエリの質問です。 先日同様の質問をさせていただきましたが、その後うまくできないところがあったので再度質問させていただきました。 内容は、フィールドの値のカウントを集計し、更新クエリを使用してデータを更新するという内容です。 前回の質問でDCount関数を用いて下記のとおり実行するとできるとのことでしたが、条件が複数ある場合どのように記述すれば いいのかを教えて下さい。 条件は、 (1)年月 =Aテーブル.年月 (2)コード=Aテーブル.コード (3)区分 =Aテーブル.区分 <こんな感じで実行しようとしたのですがうまく動きません> UPDATE Bテーブル SET" カウント数1 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='001'') カウント数2 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='002'') やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> A年月  Aコード A区分      200807  9991   001 200807  9991   001 200807  9991   001 200807  9991   002 200807  9991   002 <Bテーブル> B年月  Bコード Bカウント数1  Bカウント数2 200807  9991        0       0 ↓↓↓更新後 <結果:Bテーブル>   B年月  Bコード Bカウント数1  Bカウント数2 200807  9991        3       2              ↑       ↑    (Aテーブルの区分='001'  (Aテーブルの区分='002'     を集計した結果)       を集計した結果)

  • エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい

    エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい 実は先に同様の質問をしてご回答を頂きましたが、やりたかったことがうまく質問できていなかったので再度質問させていただきます。 自分で考える能力が無いものですみません(._.)。 テーマはゴルフのスコア分析とお考え下さい。1行目が各ホールのパーの数字、2行目がそれに対応するスコアが入っているというデータがあります。 Par---- 4 4 3 5 4 ・・・ Score-- 5 4 5 4 4 ・・・ このような感じです。 このデータで、Parが4のホールで、4で上がった数(パーを取った個数)を集計する方法が分かりません。同様に、Parが4のホールで、3(バーディ)を取った数(個数)も集計したいのです。countif関数ではpar4のホールの数を数えることができますが、その中でパーやバーディやボギーで上がった個数をそれぞれ取りたいのです。 DCOUNTでは、列の見出しが無いのでうまく作動してくれません。どうも、行と列が逆のようです。1ラウンドのデータが2行に分かれていて、1行目がパー、2行目がスコアという形になっているので、このデータの行と列を入れ替えるという作業は避けたいのです。 エクセル関数初心者にご指導をよろしくお願いします。

  • Accessの集計クエリで0カウント集計させない

    Accessの集計クエリで顧客のカルテ番号データからカウント集計クエリで一日の人数を表示しているのですが、 来店客が0の時(0)と入力してもカウント集計クエリでは1とカウントされてしまいます、 どうすれば来店客が0の時(0)と入力してもカウントされなくなるでしょうか

  • Excel 2007の関数

    条件付きデータの個数集計がわかりません。地域、新しい顧客(Y/N)のデータから新しい顧客数を数えたいのですが、条件が二つあるのでCountifが使えません。 地域   新しい顧客 A市     Y B市     Y A市     Y A市     N 上のデータから求めたい個数集計は、地域別の新顧客数です。 A市 2 B市 1 このようになるには、どのような関数を使えばよいのでしょうか。教えてください。

  • 【Access】特定の顧客のみ集約して集計する

    Access2010で下記のような条件で集計をしたいと思っています。 ------------------------------- テーブル1 フィールド(1):顧客番号 フィールド(2):売上金額 フィールド(3):売上月 001/100円/1月 002/ 50円/1月 003/200円/1月 004/150円/1月 テーブル2 フィールド:(1)顧客番号 フィールド(2)集約先(顧客番号) 001/002 002/003 ★完成クエリ フィールド(1)顧客番号(集約) フィールド(2)売上金額 フィールド(3)売上月 003/350円/1月 004/150円/1月 ------------------------------- 顧客番号ごとの売上金額を集計しますが、 その際、集約先を持つ顧客番号については、 集約先を参照し、顧客番号(集約)という括りで集計したいと思っています。 Excelだと、IF関数を使って「もし集約先セルが空欄なら顧客番号を参照してコピーする」等して、 顧客番号(集約)の列で括って集計する、と考えたりできるのですが、 Accessは不慣れなこともあって、なかなか良い方法が思いつきません・・・。 どうか集計方法をご教授いただけないでしょうか。 よろしくお願いします。