

Excel VBA で「配列に一気に値を詰めたい」「ワークシート関数をVBAから呼びたい」と思ったことはありませんか?
そんなとき便利なのが
Application.Evaluate
です!

文字列で数式を指定するだけで、VBA配列として結果を受け取れます。ループ不要で高速なのも魅力です。
以下のプログラムは、金額列(C列)が100より大きいデータを配列に一気に取り込むものです。

Sub Sample()
Dim arr As Variant
' A2:C11の表から、C列が100より大きい行だけを抽出
arr = Application.Evaluate("FILTER(A2:C11, C2:C11>100)")
' 配列の中身を見てみる
Dim i As Integer
For i = LBound(arr, 1) To UBound(arr, 1)
Debug.Print arr(i, 1) & "," & arr(i, 2) & "," & arr(i, 3)
Next i
End Sub


FILTER
は「シート上だけの機能」と思われがちですが、VBAからも驚くほど簡単に利用できます。
一度知ってしまえば、ループ処理で条件抽出するよりずっとスマート。



コメントを残す