Office 2019 Access 2019

フィールドの同じ値の数をカウントするにはクエリでグループ化

投稿日:2021年9月6日 更新日:

クエリのグループ化は、グループごとに集計できる便利な機能です。

たとえば、1つのフィールド内の同じデータをグループ化して、合計やカウント、平均などを求めることができます。

ここでは、1つのフィールドの同じデータの数をカウントする方法を解説します。

テーブルからカウントする場合と、抽出されたデータからカウントする場合に分けて解説します。

クエリでグループ化

参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...

続きを見る

テーブルを基にフォームを作成

テーブル[T_商品出荷先]を作成しています。

テーブルのデータシートビュー

上記テーブルを基に、帳票フォームを作成します。

テーブル[T_商品出荷先]を選択した状態で、[作成]タブの[フォーム]グループにある[その他のフォーム]から[複数のアイテム]をクリックします。

複数のアイテム

複数のレコードを一度に表示するフォームを作成します。

[作成]タブの[その他のフォーム]から[複数のアイテム]

以下のようなフォームが作成されます。

レイアウトビュー]表示になっています。

フォームのレイアウトビュー

デザインビューに切り替えて、コントロールの大きさや位置を整えます。

ここでは、コントロールや、ラベルは、以下のような大きさにしています。フォームヘッダーの上部は[検索ボックス]などを設置するので、少し空けておきます。

コントロールの調整については、以下の記事が参考になると思います。

フォームのコントロールのグループ解除(レイアウトの削除)と結合・再設定

Accessでテーブルやクエリをもとにフォームを作成すると、コントロールを自由に移動できないということがあります。 それは、コントロールがグ ...

続きを見る

デザインビューに切り替えて、フォームのプロパティの[書式]タブで[既定のビュー]を見ると、[帳票フォーム]になっていると思います。

フォーム名は、[F_商品出荷先]としています。

帳票フォームの作成

フォームビューは、以下のようになっています。

フォームビュー

フォームに非連結の検索ボックスを設置

フォームをデザインビューで開いて、フォームヘッダーに商品検索ボックスを設置します。

[フォームデザイン]タブの[コントロール]から[テキストボックス]をクリックします。

コントロールのテキストボックス

フォームヘッダーにドラッグします。

[コントロールウィザード]が表示されたら、[キャンセル]ボタンをクリックします。

フォームヘッダーのテキストボックス

ラベルは、[商品検索]と名前にします。

テキストボックスは、コンボボックスにしてプルダウンから選択できるようにしたいので、テキストボックスで右クリックして、ショートカットメニューから[コントロールの種類の変更]-[コンボボックス]をクリックします。

ショートカットメニューの[コントロールの種類の変更]-[コンボボックス]

非連結のコンボボックスのプロパティを表示します。

キーボードから[F4]キーを押すと、プロパティを表示できます。

[選択の種類]が[コンボボックス]になっていることを確認してください。

[その他]タブの[名前]に任意の名前を入力します。ここでは[商品検索]とします。

コンボボックスのプロパティ[その他]タブの[名前]に入力

[データ]タブを選択して、以下のように設定します。

[値集合タイプ]は[リスト]を選択して、[値集合ソース]には、商品名を入力します。

商品名テーブルがあれば、テーブルを指定して設定してください。

[値リストの編集の許可]は[いいえ]を選択します。

[値リストの編集の許可]を[はい]にしておくと、値リストの項目を追加したり、削除することができます。

コンボボックスのプロパティ[データ]タブ

フォームビューに切り替えて、コンボボックスのドロップダウンで商品名が選択できるかを確認します。

フォームビューのコンボボックス

参考コンボボックスでリスト以外の値が入力されないようにする設定については、以下の記事で解説しています。

コンボボックスにリスト以外の値が入力されないようにするには

テーブルやフォームでコンボボックスのリストから値を選択して入力するようにしていても、プロパティの[入力チェック]を[いいえ]に設定していると ...

続きを見る

フィルター実行のコマンドボタンを作成

デザインビューに切り替えて、コマンドボタンを作成します。

[フォームデザイン]タブのコントロールから[ボタン]をクリックして、コンボボックスの右横にドラッグします。

[コントロールウィザード]が表示されたら、[キャンセル]ボタンをクリックします。

[フォームデザイン]タブのコントロールから[ボタン]を選択

コマンドボタンのプロパティを表示して、[書式]タブの[標題]に[抽出]と入力します。

[標題]とはコマンドボタンに表示される名前になります。任意の名前でかまいません。

コマンドボタンのプロパティ[書式]タブの[標題]に入力

[その他]タブを表示して、コマンドボタンの名前を変更します。ここでは、[抽出]という名前にします。

コマンドボタンのプロパティ[その他]タブの[名前]に入力

次にマクロビルダーで[抽出]ボタンをクリックしたら、レコードを抽出できるように設定します。

[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[…]をクリックします。

コマンドボタンのプロパティ[イベント]タブの[クリック時]の[…]ボタン

[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスで[マクロビルダー]を選択

[マクロツール]が表示されます。

[新しいアクションの追加]の▼ボタンをクリックして、アクションメニューから[フィルターの実行]を選択します。

[フィルターの選択]でもかまいません。

アクションメニューから[フィルターの実行]を選択

そして、[Where条件式]に以下のように入力します。

入力途中で入力候補一覧(補助メニュー)が表示されると思いますので、活用してください。

[商品名]=[Forms]![F_商品出荷先]![商品検索]

そして、[上書き保存]ボタンをクリックして、[閉じる]ボタンをクリックします。

参考抽出条件を設定したクエリを作成している場合は、[フィルター実行]の[フィルター名]にクエリの名前を入力してください。

[フィルターの実行]の[Where条件式]に入力

コマンドボタンのプロパティには、[埋め込みマクロ]と表示されます。

コマンドボタンのプロパティ[クリック時]-「埋め込みマクロ」

フォームビューに切り替えて、商品名でレコードが抽出できるかを確認します。

フォームビューで[抽出]ボタンをクリック

フィルターの解除ボタン

フィルターの解除ボタンも作成しておきましょう。

[抽出]ボタンを作成した時と同じように[解除]ボタンを作成して、マクロビルダーを起動して、2つのアクションを設定します。

[フィルター/並べ替えの解除]を選択します。

次に、[すべてのアクションを表示]ボタンをクリックして、[値の代入]を選択します。

[アイテム]に[商品検索]、[式]に[Null]と入力します。

[解除]ボタンのマクロ

フォームビューに切り替えて動作を確認しておきます。

フォームビュー

参考これまでの内容は、以下の記事でも解説しています。あいまい検索などで抽出したい場合は、以下の記事を参考にしてください。

[解除]ボタンについても、詳細に解説しています。

テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)

Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...

続きを見る

クエリでグループ化

クエリを2個作成します。

1つは、テーブル[T_商品出荷先]のレコードで出荷先県の数を求めます。

もう1つは、抽出条件を設定したデータから、出荷先県の数を求めます。

テーブルから集計(カウント)

[作成]タブの[クエリ]グループから[クエリデザイン]をクリックします。

[作成]タブの[クエリデザイン]

[テーブルの表示]ダイアログボックスが表示されますから、[T_商品出荷先]を選択して[追加]ボタンをクリックします。

[テーブルの表示]ウィンドウ

参考バージョンによって異なると思いますが、[作成]タブの[クエリデザイン]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。

クエリデザインの「テーブルの追加」は作業ウィンドウに表示される

デザイングリッドにフィールドを登録して[集計行]を追加

デザイングリッドに[ID]と[出荷先]フィールドをドラッグします。

[クエリデザイン]タブの[表示/非表示]グループにある[集計]ボタンをクリックします。

デザイングリッドに[集計行]が追加されます。

[ID] フィールドで[カウント]を選択します。[出荷先]フィールドは[グループ化]のままにしておきます。

参考カウントするフィールドは、すべてのレコードが入力されているフィールドを指定します。

[クエリデザイン]タブの[表示/非表示]グループにある[集計]ボタン

デザイングリッドは以下のようになります。

デザイングリッドの[集計]行

クエリを[データシートビュー]で確認すると、以下のようになります。クエリに名前を付けて保存します。

ここでは、[Q_商品出荷先]とします。

クエリのデータシートビュー

抽出条件を設定したデータから集計(カウント)

フォーム[F_商品出荷先]で[商品検索]の[商品名]で抽出したデータから、出荷先県の数をカウントします。

[商品名]フィールドをデザイングリッドに追加して、[集計]で[Where条件]を選択します。

クエリの[集計]で[Where条件]を選択

[Where条件]を選択すると、自動的に[表示]はオフになります。

[商品名]の[抽出条件]には、以下のように入力します。

[Forms]![F_商品出荷先]![商品検索]

クエリの[集計]行

クエリに名前を付けて保存します。ここでは、[Q_商品抽出出荷先]とします。

フォーム[F_商品出荷先]で[商品検索]で[商品A]を選択した状態で、クエリ[Q_商品抽出出荷先]を実行すると以下のようになります。

フォームを表示してクエリを実行

ナビゲーションウィンドウには、以下のオブジェクトができています。

ナビゲーションウィンドウのオブジェクト

参考抽出条件を設定したクエリを作成している場合は、そのクエリを基にクエリを作成してグループ化を設定してください。

フォームに全レコード数と出荷先県の数を表示

フォーム[F_商品出荷先]をデザインビューで開いて、非連結のテキストボックスを2個挿入します。

すべてのレコード数を表示するテキストボックスと、すべての出荷先県の数を表示するテキストボックスです。

非連結のテキストボックスを2個挿入

すべてのレコードの件数を表示するテキストボックスのプロパティを表示して、[データ]タブの[コントロールソース]に以下のように入力します。

テーブルやクエリの全レコード数を求めるには、Dcount関数を使用します。

DCount 関数(Microsoft)

=DCount("*","T_商品出荷先")

プロパティの[データ]タブの[コントロールソース]

すべてのレコードで出荷先の県の数を表示したいテキストボックスには、コントロールソースに以下のように入力します。

=DCount("*","Q_商品出荷先")

プロパティの[データ]タブの[コントロールソース]

フォームビューに切り替えて確認します。

フォームビューに切り替えたときのテキストボックス

参考DCount関数については、以下の記事でも解説しています。

重複データが入力されたらオリジナルのメッセージを表示する

Accessのフォームで受付番号を入力するように作成しています。 受付番号を入力したときに、既に入力済みの番号であればメッセージウィンドウを ...

続きを見る

レコード検索時に該当するレコードがない場合はメッセージを表示する

フォームに検索ボックス(テキストボックス)を設置して、管理番号を入力したら該当のレコードを抽出する仕組みを作ります。 その時、検索ボックスに ...

続きを見る

抽出データの件数を表示

商品名で抽出した後のレコード件数と出荷先県の数を表示するため、非連結のテキストボックスを2個挿入します。

テキストボックスの名前は、それぞれ[抽出レコード数]と[出荷先県の数]とします。

非連結のテキストボックスを2個挿入

[抽出]ボタンのマクロにアクションを追加

コマンドボタン[抽出]のマクロに追加します。

[すべてのアクションを表示]をクリックして、[値の代入]を選択します。

[アイテム]に[出荷先県の数]、[式]に[DCount("*","Q_商品抽出出荷先")]と入力します。

DCount("*","Q_商品抽出出荷先")

上書き保存して閉じます。

コマンドボタン[抽出]のマクロに追加

[解除]ボタンのマクロにアクションを追加

コマンドボタン[解除]のマクロに追加します。

[値の代入]を追加して、[アイテム]に[出荷先県の数]、[式]に[Null]と入力します。

上書き保存して閉じます。

[解除]ボタンのマクロにアクションを追加

テキストボックス[抽出レコード数]のコントロールソースに入力

[抽出レコード数]のプロパティを表示して、[データ]タブの[コントロールソース]に、以下のように入力します。

テキストボックス[出荷先県の数]が空白でなければ[Count(*)]、それ以外は空白にするという意味です。

[Count(*)]でレコード数が表示されます。

Count 関数(Microsoft)

=IIf([出荷先県の数]<>"",Count(*),"")

[抽出レコード数]の[データ]タブの[コントロールソース]

Count関数については、以下の記事でも解説しています。

重複しないデータの個数とレコードの抽出件数をテキストボックスに自動表示

Accessのフォームに重複しないデータの個数を表示する方法を紹介します。 下のようにフォームヘッダーのテキストボックスに部署数の重複しない ...

続きを見る

フォームビューに切り替えると以下のようになります。

フォームビュー

商品検索で[商品A]を選択して、[抽出]ボタンをクリックすると以下のようになります。

フォームビューの商品検索で[商品A]を選択

[解除]ボタンをクリックすると、テキストボックスは空白になります。

参考グループ化による集計は、以下の記事でも解説しています。

クエリでデータをグループ化して集計

クエリのデザイングリッドに[集計]セルを表示すると、データをグループ化して、グループごとに集計することができます。 製品ごとに数量や売上の合 ...

続きを見る

グループ化で重複レコードを削除したテーブルを作成

Accessで、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 クエリでグループ化を設定して重複レコードがな ...

続きを見る

検索

ほかの記事も検索してみませんか?

Access / Excel / PowerPoint / Word

関連記事30件

Profile

-Office 2019 Access 2019

Copyright © 2001-2024 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2024 AllRights Reserved Powered by AFFINGER4.