VBAUniqueCount.zip (Access 2002-2003 形式 - 33kb) レコード 重複行を除いて件数をカウントする ここでは、テーブルの項目に重複が有る場合のカウント方法を紹介します。 事例として、インポートして作った、Orderテーブルから、「得意先」別の「商品」点数をカウントします。 Copyright ©document.write(new Date().getFullYear()); Impress Corporation. VBAUniqueCount_07.zip (Access 2007 形式 - 38kb) =UniqueCount("会員ID"), 月会費受け取り日付がNullのデータのある会員数(未収ユニーク会員数) 二重登録などの重複データを抽出するには、[重複クエリウィザード]を使います。ここでは、例として[懸賞応募テーブル]で同一人物の応募がないか、重複しているレコードを抽出して確かめる方法を解説し … =UniqueCount("会員ID","月会費受け取り日付 Is Null"), フィルタを掛けたり変更したりすると自動で再計算されますが、データを更新・追加・削除した場合は再計算されませんので、フォームの更新後処理で強制的に再計算させてください。, グループヘッダー/フッターの場合は、下記のようにグループのキーフィールドで抽出条件を設定すれば、グループ内での集計になります。 二重登録などの重複データを抽出するには、[重複クエリウィザード]を使います。ここでは、例として[懸賞応募テーブル]で同一人物の応募がないか、重複しているレコードを抽出して確かめる方法を解説します。, [重複クエリウィザード]を使用すると、簡単に重複データを抽出できます。テーブルにレコードが二重登録されていないか調べたいときなどに利用します。, ここでは例として、[懸賞応募テーブル]に同一人物のレコードが重複していないかを調べます。このときポイントになるのは、どのようなデータを重複と見なすのか、きちんと考えることです。, ここでは、氏名と電話番号の両方が一致するデータを重複と見なします。つまり、氏名が同じでも電話番号が異なれば重複とは見なさないということです。, なお、クエリのデータシートに表示される内容は、操作10 ~ 11のクエリの結果にフィールドを追加する画面での指定によって変わります。操作10でフィールドを指定すると、そのフィールドの値が表示されます。, この手順の例では[ID]フィールドを指定しているので、二重登録されているレコードの「氏名、電話番号、ID」が表示され、「田中哲、03-3455-xxxx、5」「田中哲、03-3455-xxxx、3」のように2組表示されます。操作10でフィールドを指定しない場合は、「田中哲、03-3455-xxxx、2」のように「氏名、電話番号、重複件数」が表示されます。, 東京都生まれ、神奈川県在住。テクニカルライター。お茶の水女子大学理学部化学科卒。大学在学中に、分子構造の解析を通してプログラミングと出会う。プログラマー、パソコンインストラクターを経て、現在はコンピューター関係の雑誌や書籍の執筆を中心に活動中。, テクニカルライター。企業内でワープロ、パソコンなどのOA教育担当後、OfficeやVB、VBAなどのインストラクターや実務経験を経て、フリーのITライターとして書籍の執筆を中心に活動中。. MS Access Tips/Sample and VBA and Blog customize etc... Access Club 超初心者 FORUM の下記のスレッド用に作成したサンプルです。 =UniqueCount("会員ID","グループコード=" & [グループコード]), サンプルファイルが下記からダウンロードできます。 特定のフィールドを基準に重複を省いて、フォームに表示中のレコード件数を.. これをレコードソースとするフォームやレポートで、会員は何名いるか、あるいは、会費の未収(月会費受け取り日付 がNull)がある会員は何名いるか、を表示したい。フォームやレポートにはフィルタが掛かっている場合もあり、その場合は、表示されているデータを対象に集計したい。, というような要件です。上記のデータの場合、希望する結果としては、ユニーク会員数 3名、会費未収会員数 2名 となります。, コントロールソースにDCount関数を利用した式を設定して表示する方法と、ユーザー定義関数を作成してそれを利用する方法を紹介します。, 下記のような「会員マスタ」テーブルが存在するのが前提です。(正規化された設計をしていれば存在すると思います。), 月会費をレコードソースとする帳票フォームを作成。そのフォームフッターに下記のテキストボックスを配置。, DCount関数の第3引数の抽出条件に、サブクエリを含めるのがポイントですね。フィルタの抽出条件は、Filterプロパティを参照して取得できます。, これで、ユニーク会員数か表示できます。フィルタを掛けたり変更したりすると自動で再計算されます。また、データを更新または追加した場合も自動で再計算されます。, 上記のDCountを利用する方法は、かなり複雑な式になりますので、メンテナンスが面倒そうです。もう少しシンプルな式で記述したいですね。, 標準モジュールに下記の関数を作成します(ダブルクリックで選択して、コピーして貼り付けてください。)。, 2011/07/26 修正: レコードソースにSQLを設定していて、最後が";"の時、エラーになるバグを修正, フォームのフォームヘッダーかフォームフッターのテキストボックスのコントロールソースに下記のように設定します。, 会員IDを基準に重複を排除した件数(ユニーク会員数) アクセス担当のまみです。 全レコードの数とか、ある条件を満たすレコードの数とか、そういうレコードの数を知りたい時があります。 レコードの数がわかれば、割合がわかるのでグラフの作成もできちゃいますね。 今回は、Dcount関数についてお伝えしますね。 All rights reserved. Access Club 超初心者 FORUM の下記のスレッド用に作成したサンプルです。 特定のフィールドを基準に重複を省いて、フォームに表示中のレコード件数を.. 例えば、下記のようなテーブルあるとして、 月会費 会員ID月号月会費受け取り日付 12011年5月号2011/05/02 12011年6月号2011/06/03 12011年7月 … VBAUniqueCount_2k.zip (Access 2000 形式 - 31kb), お世話になります。 冒頭で上げられているAccessフォーラムの質問者です。 今さらながら当該スレッドに追記があったことを知りましてお礼を申し上げに来ました。(向こうはもう過去ログになってしまっているため) 自分は「もうVBAで書こう・・」的な事を言いましたが、結局DCountで弄ってたら特に問題ない動作してたのでそちらで実装することにしました。 正直このやり方は自分では絶対に出てこなかったっと思うので非常に助かりました。 ありがとうございました。 ついでに追伸 冒頭のフォーラムURLはもう繋がらない?ようです。 今はこちら?過去ログになるとURLが変わるのかな? http://www.accessclub.jp/bbs3/0588/superbeg169877.html 後、 ・会員IDを基準に重複を排除した件数(ユニーク会員数) ・月会費受け取り日付がNullのデータのある会員数(未収ユニーク会員数) の中身が同じになってしまっています。 (サンプルの中の記述はもちろん問題なし), http://www.accessclub.jp/bbs3/0588/superbeg169877.html, 03/02 hatena の Microsoft Access 掲示板 は閉鎖になりました!, 01/13 電話番号の適切な位置に区切り文字を挿入する関数+市外局番データアップデイトツール(高速版), 12/19 電話番号の適切な位置に区切り文字を挿入する関数+市外局番データアップデイトツール(完全版), 12/16 カレンダーフォーム、カレンダーレポート及びカレンダーダイアログ日付入力関数を更新しました, =DCount("会員ID","会員マスタ","会員ID In (SELECT 会員ID FROM 月会費 WHERE " & Format(IIf([FilterOn],[Filter],""),"&;""True""") & ")"), =DCount("会員ID","会員マスタ","会員ID In (SELECT 会員ID FROM 月会費 WHERE 月会費受け取り日付 Is Null AND " & Format(IIf([FilterOn],[Filter],""),"&;""True""") & ")"). Access for Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 その他... 簡易表示 この記事では、クエリによって返されたデータをカウントする方法について説明します。