VBAでもADO×SQLをつかうべき圧倒的な3つの理由
VBAでデータ処理、加工を簡単・スピーディーにやりたいならADO×SQL一択

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ではムダな処理がなく、接続→抽出だけやってるから速い。

コード修正につよい

SQLでコード修正が発生するのは、列名が変わったときぐらい。それも一瞬で直せる。

たとえば、列の順番が変わったりしても.Cells()なんちゃらで対応しているとだるい。Match関数でさえ、エラー処理をいれないとダメ。

ADO×SQLでは列名さえあればOK。新しくデータいれるときも更新もすぐできる。

それも、どっか設定用のシートに列名いれるだけでコード修正すら必要なくなる。

まとめ: さっそくADO×SQLをつかってみよう

  • 短いコードで可読性が高い
  • データ処理が高速化
  • コード修正につよい

ということがADO×SQLをつかうべき理由。少しでも価値を感じたなら、まずVBAのADOでSQLを使えるようにする方法【爆速でデータ加工】でSQLをつかえるようにする準備をしていく。

つぎに【まとめ】ADO、SQLの書きかたすべて【基本・JOIN結合・使える、使えない構文】をみて実際にSQLを実行して短く簡単なコードが書けることを実感してみてほしい。