[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.129 Access いろいろとクエリーでグループ集計をしてみる

Access いろいろとクエリーでグループ集計をしてみる

メルマガ発行内容

<Access いろいろとクエリーでグループ集計をしてみる>

どうも、三流プログラマーのKen3です。 最近、質問もらうけど、 なかなか、解答できてない三流プログラマーのKen3です。 ※私のレベルで手に余る高度な質問が多くて。 今回の、サンプルファイルは、 http://www.ken3.org/vba/lzh/vba129.lzh にdb129.mdb(Access2000版)が保存されています。 ※クエリーをいじって、遊んでみてください。

/* * 1. 今回のキッカケ */

郵便番号の集計システムを現在やってます。 前回、ExcelのシートをAccessにインポートしました。 今回は、データを集計してみたいと思います。 集計方法(集計ルール) ^^^^^^^^^^^^^^^^^^^^^^ In message "[VBAで楽しく No.127] - 要求を聞き、疑問点をつぶし、仕様書を書く", >2.集計処理 > 郵便番号をカウントする > 郵便番号が7桁そろっているものを集計する > 同様に、3桁しかないもの,2桁しかないもの,その他 > を集計する。 > 集計結果が10以下(1〜9)のデータは、最後に△で集計する。 --- なんて、ルールより、ほしい結果を見た方がわかり易いかな。 (※だったら、このわかりにくい設計書は失敗ってことでは?) シート1(7桁正しいデータ) 郵便番号 集計数 000-0001 20 000-0002 19 000-0003 18 000-0004 11 シート2(7桁以外のデータ) 郵便番号 集計数 郵便番号 集計数 561 15 98 13 562 16 97 56 ←郵便番号が2桁しかないもの、なおかつ 563 20 78 35  集計数が10以上のものを番号順に並べる 564 36 565 29 2 15 ←郵便番号が1桁しかないもの、なおかつ 566 39 3 20  集計数が10以上のものを番号順に並べる 567 11 568 22 △△△ 1045 569 44 ↑ 郵便番号の集計で1〜9までのモノがあれば 570 33 △△△として郵便番号が何桁であろうが 571 55 この部分に計上することになる。 572 66 ↑ 郵便番号が3桁しかないもの、なおかつ 集計数が10以上のものを番号順に並べる

/* * 2.単純に集計を行う */

早い話が、インポートされた、 MOTO_DATA テーブルを同じ郵便番号で集計して(数を数えて) それぞれの条件で扱いやすければいいって感じで。 MOTO_DATAテーブル内のテストデータ 郵便番号 氏名 住所 電話番号 194-0012 三流 東京都町田市 070-9999-8888 228 タコスケ 神奈川県相模原市 070-9999-8889 220-0021 金城 神奈川県横浜市西区 070-9999-8890 220-0021 内川 神奈川県横浜市西区 070-9999-8891 220-0021 鈴木尚 神奈川県横浜市西区 070-9999-8892 ・ ・ ・ まずは、単純に集計してみます。 クエリーで、MOTO_DATAを選択後、郵便番号を選び、 メニューの表示を選択、集計にして、 グループ化とカウントを入れます ↑操作イメージ すると、郵便番号でカウントされた値が集計されたクエリーができます。 郵便番号 郵便番号のカウント 194-0012 1 220-0021 14 228 1 232 11 700-0941 1 ↑クエリー結果イメージ

/* * 3.文字数を数えてみる(演算フィールドの追加) */

結果が、 郵便番号 郵便番号のカウント 194-0012 1 220-0021 14 228 1 232 11 700-0941 1 と、なったけど、このままでは、使いにくいです。 194-0012 1 220-0021 14 700-0941 1 と 228 1 232 11 の2つに分けたいんだけど、何か、方法は無いのか・・・ 当たり前の話、文字数が違うので、Len関数を使って、文字数を求めてみます。 桁数:Len([郵便番号])とクエリーの演算フィールドを作成してみます。 フィールドに桁数:Len([郵便番号]) 集計を演算にしたフィールドを作成します。 ↑演算フィールド作成イメージ このクエリーを実行すると、 郵便番号 郵便番号のカウント 桁数 194-0012 1 8 220-0021 14 8 228 1 3 232 11 3 700-0941 1 8 上記のような結果が得られます。 ↑実行結果イメージ

/* * 4.大きく3つのパターンに分ける */

郵便番号 郵便番号のカウント 桁数 194-0012 1 8 220-0021 14 8 228 1 3 232 11 3 700-0941 1 8 ここまで、なんとか、クエリーでもってこれました。 これを パターン1 郵便番号7桁(−付で8桁)、カウント10以上 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 郵便番号 郵便番号のカウント 桁数 220-0021 14 8 パターン2 郵便番号7桁以外(−付で8桁以外)、カウント10以上 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 郵便番号 郵便番号のカウント 桁数 232 11 3 パターン3 カウント数が10以下(1〜9)※郵便番号が何桁であろうが ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 郵便番号 郵便番号のカウント 桁数 194-0012 1 8 228 1 3 700-0941 1 8 に分けてみたいですね。 元のクエリーに条件を付けて、 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3つのクエリーを作成してみたいと思います。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ パターン1 Q_YUBIN_7 郵便番号7桁(−付で8桁)、カウント10以上 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 郵便番号 郵便番号のカウント 桁数 220-0021 14 8 --- 条件は >=10(10以上) で =8(桁数は8桁) ↑設定・実行結果イメージ パターン2 Q_YUBIN_ETC 郵便番号7桁以外(−付で8桁以外)、カウント10以上 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 郵便番号 郵便番号のカウント 桁数 232 11 3 --- 条件は >=10(10以上) で <>8(桁数はNot 8桁) ↑設定・実行結果イメージ パターン3 Q_YUBIN_1to9 カウント数が10以下(1〜9)郵便番号が何桁であろうが ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 郵便番号 郵便番号のカウント 桁数 194-0012 1 8 228 1 3 700-0941 1 8 --- 条件は <10 (10以下) で (桁数の条件は無し) ↑設定・実行結果イメージ

/* * 5.終わりの挨拶 */

今回は、 グループ化の集計方法 を探ってみました。 3つのグループを作成することが出来ました。 あとは、この集計結果をExcelへ出力です。 なんか、あまりスマートじゃなかったけど、 こんな方法もあるってことで。 今回の、サンプルファイルは、 http://www.ken3.org/vba/lzh/vba129.lzh にdb129.mdb(Access2000版)が保存されています。 ※クエリーをいじって、遊んでみてください。 何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]