ExcelSQLの使用方法
RDBに慣れた人がExcelを使っていると、ふと**「SQLで言うと"こういう"事がしたい」**と思う時があります。Excelでも工夫すればできる事もあるのですが、「ルックアップするときはルックアップ元のデータを昇順に並び替えないといけない」等、使い続けないと忘れてしまう独特なルールが存在します。
そういったときに役立つツール「ExcelSQL」をご紹介します。
ExcelSQLとは?
文字通りExcelでSQLが実行できます。 **「1シート = 1テーブル」に見立てて、SQL実行。結果をシートに吐き出す事ができます。さらに、それをテーブルに見立ててSQLを実行することも可能です。
MS Excelでできる事「タブ区切りデータの扱いに優れている」点と、
SQLでできる事「データを繋ぐ等、RDB(リレーショナルデータベース)としてデータの扱いに優れている」**点が
両方備わっています。
使ってみよう
- http://ltside.com/pgm/ExcelSQL.zip からファイルをダウンロードします。
- 1のzipファイルを任意の場所に展開します。
- 展開したファイル中の**「ExcelSQL.xlsm」**を開きます。
- 問題無ければ※1、**「編集を有効」「コンテンツの有効化」**を行います。
- SQLが記載された状態で**「SQL,プレビュー」**ボタンを押すと、下に結果が出力されます。
- SQLが記載された状態で**「新規シート出力」**ボタンを押すと、新規シートが作成され、そこに結果が出力されます。出力されたシートは、一般のExcelシートと同様に扱うことが可能です。逆に別途シートを作成し、それをテーブルに見立てることも可能です。
- **「シート」ボタンには「新規シート」「新規シートに貼付(項目有・無)」**等、シートの管理に関わる機能がついています。
- **「新規シートに貼付」**は書式・スタイルを取り除いた「文字列」形式で貼り付けることができます。
注意点
- 利用は自己責任でお願いします。
MITライセンスに準拠します。
従って、同梱されているファイルを利用した場合に発生したトラブルに関して、以下製作者の責任は問われないものとします。
- データの扱いに気を付ける
Excelでよくある自動型変換。例えば「0001」を数値と判断し、「1」と変換されたりする、Excelのすばらしい機能によって、テーブル結合や抽出の不一致にならないよう注意してください。**「新規シートに貼付け」**はそうならないように配慮しています。
- ODBC Excel Driverを利用しています
基本構文はSQL標準の扱いができますが、関数はMS-SQLServerではなく、MS-Access-SQLに準拠しています。参考資料:Access関数 Access-SQLの機能制約版といったイメージです。
例えば条件分岐。一般のSQLはcase文が定石ですが、ExcelSQLでは「IIF」といったVisualBasicのような書き方に似ています。
- join 句は省略できない
同様、Access SQLに準拠し、「join」ではなく、「inner join」 と明示的に指定しないといけないようです。
- パフォーマンスはマシン次第
一応、1シート999999レコード上限としていますが、RDBに最適化されている訳ではないので、処理効率については期待しないでご利用ください。
- データの終わりに気を付ける
シートを修正していると、行の末端や列の末端が伸びてしまうことがあり、oreder by でソートをかけると、空白行が先頭に溜まってデータが見えない場所に出力される場合があります。行や列の終わりの空白ができた場合は**「列削除」**を行います。