- ベストアンサー
- すぐに回答を!
DCOUNT関数がなぜかカウントしない
DCOUNT関数を使って顧客のデータから来店回数を抽出しようとしているのですが、エラーは出ないのですが、なぜかどの客も来店回数が0なのです。 顧客データがにはちゃんと来店日、売上などがかいていあるのですけど… DCOUNT関数のdatabaseに顧客の全データ(顧客の来店などのデーターを含む)のシート全体を指定して、フィールドに「ID番号」(顧客の)の列を指定して、クリテリアには集計するID番号の顧客ID番号を入力しています。 数字は出てくるんですが、どの顧客も来店回数0です。 エクセル2000を使っています。 なぜ、うまく計算されないのかさっぱり分かりません。 よろしくお願いします。
- 209belon
- お礼率30% (95/314)
- 回答数4
- 閲覧数1869
- ありがとう数2
質問者が選んだベストアンサー
- ベストアンサー
- 回答No.3
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
#1および#2さんの回答どおり、DCOUNT関数は、数値をカウントする関数ですのでうまくいかないと思います。 補足の条件でデータを作って、DCOUNTA関数でやっていみましたらうまくいきました。 (DCOUNT関数ではうまくカウントしません) ただし、空白でないセルの個数のカウントですので、数値も文字もカウントしますが。 もう一度、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
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
#3です。 補足ですが、条件がひとつであれば、COUNTIFというのもあります。 ID番号のID050が、簡易CRMのA2にあるとして、来店回数は、 =COUNTIF(日別顧客データ!$B$2:$B$2000,$A$2) となります。 基本的に条件は一つですが、配列数式を使えば複数の条件でのカウントもできます。 (興味があれば、参考URLもご覧ください) むしろ、この関数の方が使いやすいで、お勧めです。
- 回答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
- s_yoshi_6
- ベストアンサー率73% (1113/1519)
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 ~ 1000 表2・2日目データ 行番号 列番号 G 列番号 H 顧客番号 最終来店日 6 150 2011-11-10 7 500 2011-11-10 8 10 2011-11-10 9 ~ 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 ~ 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行目がスコアという形になっているので、このデータの行と列を入れ替えるという作業は避けたいのです。 エクセル関数初心者にご指導をよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 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は不慣れなこともあって、なかなか良い方法が思いつきません・・・。 どうか集計方法をご教授いただけないでしょうか。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
質問者からのお礼
お返事ありがとうございます。 DCOUNTA関数を使ってみたところ、うまくできたようです。 ありがとうございました。