VBAを高速化するにはファンクション関数を使うやり方がおすすめ【Excel】【自動化】【VLOOKUP】
VBAの処理が遅くて悩んでいる、困っている方に参考になればと思い、まとめました。
今回はよく使われるVLOOKUPを例にしています。
■コード例
ポイントは検索用の配列に検索キーと出力先を格納した点とVLOOKUPの格納先が違う点です。とりあえずコピペしてやってみてくださいませ。
Sub Sample()
Dim SKey As Range '検索するキー
Dim SArr As Variant '検索用の格納配列
Dim ORange As Range '出力場所
Dim i As Long
Dim rowsData As Long '行数カウント用の変数
rowsData = ThisWorkbook.Worksheets("output").Cells(Rows.Count, 1).End(xlUp).Row '最後の行数を取得
Set SKey = Worksheets("output").Range("A2:A99999")
Set ORange = Worksheets("output").Range("B2:B" & rowsData)
SearchArr = Range(SKey, ORange)
For i = 1 To SKey.Rows.Count
SearchArr(i, 1) = "=VLOOKUP(A" & i + 1 & ",data!$A$2:$B$100001,2,0)"
Next
ORange = SearchArr
End Sub
【データ前提】
■元データ(検索先データ)
■出力シート(A列が検索キー、B列が出力先)
■関連記事
VBAマクロの処理が遅くて時間がかかるので、 高速化かつ早く書ける書き方についてまとめてみた【Excel】【関数】【VBA】
エクセルのVBAで転記後、0が表示されず書式設定するだけで解決した件【Excel】【VBA】
この記事が気に入ったらサポートをしてみませんか?