■ 最新の投稿

VBA配列を一瞬で生成!Application.Evaluate 活用術~ループ不要!VBAでFILTER関数をそのまま使う

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からも驚くほど簡単に利用できます。
一度知ってしまえば、ループ処理で条件抽出するよりずっとスマート。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です