Excelの関数をマクロで入力メモ(疑問編)


Excelで関数の計算結果(値だけ)を入れたいのでマクロ化してみた


最初に作ったのが(1).
値だけ入れたいので、毎回コピペ必要なのが気になった


次に作ったのが(2).
書き方がおかしいのかオートフィルしなかった
ループさせてみたけど、かなり遅い


両方のいいところを取ったものにしたい(´・ω・`)


(1).

Sub subFormula()

    Dim mySheet1    As Worksheet
    Set mySheet1 = ThisWorkbook.Worksheets("Sheet1")

    ' オートフィルOK
    mySheet1.Range("D4:D6").Formula = "=VLOOKUP(B4,$G$4:$K$6,2,0)"

    ' 式削除(値のみ貼り付け)
    mySheet1.Range("D4:D6").Copy
    mySheet1.Range("D4:D6").PasteSpecial Paste:=xlValues

End Sub


(2).

Sub subValue()

    Dim i           As Long
    Dim mySheet1    As Worksheet
    Set mySheet1 = ThisWorkbook.Worksheets("Sheet1")

    ' オートフィルNG
    mySheet1.Range("D4:D6").Value = WorksheetFunction.VLookup(Range("B4"), Range("$G$4:$K$6"), 2, 0)

    ' しかたないからガリガリ博士
    For i = 4 To mySheet1.Range("D4").End(xlDown).Row
        ' 1行ずつ
        mySheet1.Range("D" & i).Value = WorksheetFunction.VLookup(Range("B" & i), Range("$G$4:$K$6"), 2, 0)
    Next

End Sub


※画像の列番号消しちゃった・・ まぁいいや