見出し画像

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

【データ前提】

■元データ(検索先データ)

93_VBA_エクセル_ファンクション関数_VLOOKUP_マクロ高速化_元データ

■出力シート(A列が検索キー、B列が出力先)

93_VBA_エクセル_ファンクション関数_VLOOKUP_マクロ高速化_アウトプットデータ

■関連記事

VBAマクロの処理が遅くて時間がかかるので、 高速化かつ早く書ける書き方についてまとめてみた【Excel】【関数】【VBA】

エクセルのVBAで転記後、0が表示されず書式設定するだけで解決した件【Excel】【VBA】


この記事が気に入ったらサポートをしてみませんか?