AccessでもExcelでも一番早くデータ処理、加工ができるのはSQLだけ。さて、なぜADO×SQLをつかうべきなのか3つの理由を話していこう。
あなたがADO×SQLをつかうべき3つの理由
- 短いコードで可読性が高い
- データ処理が高速化
- コード修正につよい
あなたがADO×SQLをつかうべき理由は上記の3つになる。くわしく話していこう。
短いコードで可読性が高い
SQlではテーブルかシート指定、列名と条件設定するだけでデータ加工できるから短いコードでかつ、可読性が高い。わざわざFor文やVLOOKUP関数、Macth関数をつかわないでいい。
たとえば、SQLで名前から年齢を取得したいならつぎのようにするだけ。
SELECT [PeopleSheet].age FROM [DataSheet] INNER JOIN [PeopleSheet] ON [DataSheet].name = [PeopleSheet].name WHERE [DataSheet].name = 'さいとう しょういちろう'
VBAでVLOOKUPを使おうとするとつぎのようになる。
Const AGE_COLUMN As Long = 2 Const SEARCH_NAME As String = "さいとう しょういちろう" Dim last_row As Long Dim last_column As Long Dim data_range As Range Dim age As long With PeopleData last_row = .Cells(Rows.Count, 1).End(xlUp).Row last_column = .Cells(1, Columns.Count).End(xlToLeft).Column Set data_range = .Range(.Cells(1,1), .Cells(last_row, last_column)) age = WorksheetFunction.Vlookup(SEARCH_NAME, data_range, AGE_COLUMN , False) End With
どうだ?長くて分かりにくいだろう。だからSQLにすれば短くて可読性が高いコードが書けるようになる。
データ処理が高速化
PowerQueryよりぜんぜん早い。そもそも、PowerQueryでさえ裏ではSQLをつかっている。
まあたしかにPowerQueryでも早い。ただPowerQueryだと、ヘッダーに昇格みたいなムダな処理をやってる。あと変更、修正がしづらい。
コード修正につよい
SQLでコード修正が発生するのは、列名が変わったときぐらい。それも一瞬で直せる。
たとえば、列の順番が変わったりしても.Cells()なんちゃらで対応しているとだるい。Match関数でさえ、エラー処理をいれないとダメ。
それも、どっか設定用のシートに列名いれるだけでコード修正すら必要なくなる。
まとめ: さっそくADO×SQLをつかってみよう
- 短いコードで可読性が高い
- データ処理が高速化
- コード修正につよい
ということがADO×SQLをつかうべき理由。少しでも価値を感じたなら、まずVBAのADOでSQLを使えるようにする方法【爆速でデータ加工】でSQLをつかえるようにする準備をしていく。
つぎに【まとめ】ADO、SQLの書きかたすべて【基本・JOIN結合・使える、使えない構文】をみて実際にSQLを実行して短く簡単なコードが書けることを実感してみてほしい。