(license)みなさん、こんにちは!タカハシ(@ntakahashi0505)です。引き続きエクセルVBAでAccessデータベースを操作する方法についてお伝えしています。前回の記事はコチラでした。エクセルVBAでAccessデータを集合関数による条件で抽出するHAVING句の使い方エクセルVBAでAccessデータベースからレコードを抽出する方法として、HAVING句の使い方です。BY句でグループ化したレコードを条件で絞り込む、また集合関数でテーブルの状態を判定することもできます。tonari-it.com2016.11.26HAVING句でグルーピングした結果を絞り込む方法でした。今回は、ちょっと雰囲気を変えまして日付データについてです。様々な日付を持つレコードがあったとして特定の年月のデータだけ抽出したい特定の曜日のデータだけ抽出したいといったことありますよね。エクセルVBA+Accessであれば比較的簡単にできます。いうことで、エクセルVBAでAccessデータベースからFormat関数を使って特定の日付のレコードを抽出する方法をお送りします。曜日でグルーピングするSQL文まとめ連載目次:エクセルVBAでエクセルからAccessデータベースを操作するお題となるデータベースとプログラム今回お題とするデータベースは「ga.accdb」というファイル名で、テーブルは以下の「Dailyレポート」です。当ブログの開設した2/16から現在までのデイリーのアクセス状況のデータになります。フィールドは|ID|date|users|sessions|pageviews|で構成されています。このデータベースから色々な日付に関する条件でレコードを抽出していきたいと思います。使用するVBAプログラムですがベースはこちら。Sub14行目にある通り、現在のSQL文は全抽出となっていますが、このSQL文を色々と変えることで抽出条件を変更できます。特定の年月のレコードを抽出するでは、まず特定の年月のレコードだけ抽出をしてみましょう。WHERE句を使ったSQL文を使えばよさそうですよね。#2016/01/31#でも良いですね。「あ、でもやっぱり3月を取り出そう!」などと思ったとき、SQL文の修正は若干面倒です。そんな時にはFormat関数を使えばOKです。Format関数をSQL文で使うFormat関数はVBAでもお馴染みですが、値を指定した書式に変換する関数です。Accessデータベースに問い合わせる際のSQL文内でも同様に使用することができるのです。書き方はFormat(フィールド名,書式)となります。'yyyymmdd')とすると「201612」がA1セルにポツンと出力されます。Format関数ですが、日付関連について書式に使える文字とその意味を以下にまとめますので、ご活用下さい。