pickup

なぜかクエリというものは、増えます。

それは、ACCESSの使い方を知らないからです。

または、覚えるのが面倒だからです。

目次

スポンサーリンク

毎月の集計クエリって意味あるの?

 

こんにちは。無駄なクエリを僕滅する委員会の伊川(@naonaoke)です。

ACCESSを、我が社でも利用していますが、なぜ、クエリは増え続けるのでしょうか?

カンタンな操作しか、基本書に掲載されていないことが原因でしょう。

ACCESSとExcelの連携となると敷居が高いと思う人も多いようです。

今回は、Excelを利用して、無駄なクエリを僕滅します。

実務でクエリが増える現象

月の集計

4半期毎の集計

月間の個人成績

こんな感じでしょうか?

日本人は、物持ちが良いので、平気で3年前のクエリを残しておきます。

3年前の情報は、普通、毎日の実務では利用しません。

 

Naosuke
でも、なんか、あった時に、困るから・・・・・・

 

今回の記事で、もう、困ることはなくなります。

スポンサーリンク

このブログはこんな人にお勧め

 

今回のテーマ
  • ACCESSの中にクエリが沢山ある人
  • ExcelとACCESSの連携を勉強している人
  • SQLを勉強している人

このブログを、読み終わるころには・・・・

 

このブログの結論

はっきり言いますが、無駄なクエリを30個減らせます。

集計に関するクエリは、作成する必要がなくなります。

問題は、SQLを利用するのですが、SQLの公式を利用すればカンタンです。

スポンサーリンク

ExcelVBAで、SQL文を書く

 

以前にも、この手の記事は記載しました。

しかし、ユーザーフォーム等、結構、面倒です。

今回は、ユーザーフォームを利用しないで、セルで設定します。

要するに、SQLの公式と、変数の設定だけを理解できればカンタンです。

このようなクエリは不要になります。

SQLの公式に関しては、下記の記事を参照してください。

 

ExcelでSQL文を書く 作業手順 その1 通常の記載方法

日付で抽出

SQL = “SELECT *FROM T_顧客 WHERE 日付 = #” & Format(TargetDate, “YYYY/MM/DD”) & “#”

 

期間と名前で抽出

SQL = “SELECT * FROM MT_作業 WHERE 日付 Between #” & Format(始期, “YYYY/MM/DD”) & “# AND #” & Format(終期, “YYYY/MM/DD”) & “# AND ‘” 名前=’”& 名前 & “‘”

 

こんな感じで記載します。

しかし、これって、結構面倒ですよね。

しかも、結構エラーも発生します。

イヤになります。

しかし、公式を利用すれば、カンタンです。

ExcelでSQL文を書く 作業手順 その2 男だけを転送する

スポンサーリンク

ここに、50件の、なんちゃって個人情報があります。

その中で、男のみを抽出します。

ExcelでSQL文を書く 作業手順 その3 Excelへ転送する

カンタンにできました。

必要な知識は、SQLを記載できるかです。

まず、今回に必要なSQL文は、下記の通りです。

SQL文の基本
SELECT *
FROM MT_なんちゃって個人情報
WHERE 性別 = ‘男’

このSQL文を、Excelに記載します。

これが完成のコードです。

 

SQL文のみ抜粋します。

SELECT~

FRPM~

WHERE~

これと変わりませんね。

ExcelでSQL文を書く 作業手順 その4 変数の考え方

 

ACCESSを利用していると、融通が利かないと思うことが多々ありあす。

 

ACCESSで見かけるエラー

型が一致しません。

パラメータが、少なすぎます。

クエリの演算子がありません。

 

これらのエラーは、大体、ダブルクォーテーションや、シングルクォーテーションの記載に起因します。

今回は、mygenderは、Range(“B1”)に設定しています。

 

Range(“B1”)には、男を記載しています。

 

SELECT *

FROM MT_なんちゃって個人情報

WHERE 性別 = ‘男’

上記のSQL文から、男で記載すると、パラメータが少なすぎますとエラーがでます。

 

なぜか?

‘男’ となっていないからです。

文字型抽出、数値抽出、日付抽出は、それぞれ抽出方法が違います。

このような理屈になっています。

だから、シングルクォーテーションがないと、ACCESSは、文字と認識できないため、型が一致しませんとエラーを返します。

Naosuke
なんで、シングルクォーテーションがいるのか?
なんで、ダブルクォーテーションがいるのか?
なんで、数値型には、クォーテーションがいらないのか?
それは、SQL文の知識があれば、カンタンに理解できたのです。

ExcelでSQL文を書く 作業手順 その5 期間と名前で抽出する

 

個人の成績等を確認するのであれば、個人名でもいいですが、

なんちゃって個人情報等では、該当するすべてを抽出したくなります。

そんな時は、ワイルドカードを利用します。

SQL文だけを抜粋します。

日付が、抽出条件になっているので、#(シャープ)が必要です。

また、ADOでワイルドカードを、利用する場合は、*(アスタリスクマーク)ではなく、%(パーセント)になります。

こんな感じで、抽出ができました。

ここがポイント

 

ここがポイント
Function8.png
アンパサンド、クォーテーションで記載するよりも、全然、可読性が向上します。
また、ミスも減ります。
そして、無駄なクエリを作成することなく、Excelへ転送できます。
後は、集計関数を利用して、集計結果をプレゼンすればいいのでないしょうか?
また、集計関数にしても、ある程度、フィルターをかけて、Excelへ転送しているので、
SUMIFS関数、COUNTIFS関数の出番が少なると思います。
動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

 

SQL文を勉強することは、面白く、抽出できたときは最高な気分になります。

また、この技は、実際に、私が、実務で利用していますので、本当に便利な技です。

今回も最後まで読んでいただきありがとうございました。

今回のサンプルファイルは、No304です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事