まずは、以下をご覧ください。

セルC2に入力されている数式をVBAで最下行までコピーするコードです。  

 

関数を最下行までコピーするコード

関数を下までコピーするときって、関数をコピーして、値貼り付けまでしませんか? わたしはよくサイズ軽くするために値貼り付けまでするのですが、VBAでも再現しています

Sub 関数を下までコピーする()
    ' 描画開始
    Application.ScreenUpdating = False
    Dim ws As Worksheet
    Dim endRow As Long
    ' シート名の指定
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    ' 最下行の取得
    endRow = ws.Cells(Rows.Count, 2).End(xlUp).Row
    ' 関数の入力
    ws.Range("C2:C" & endRow).Formula = "=LEFT(B2,FIND("" "",B2)-1)"
    ' 値貼り付け
    ws.Range("C2:C" & endRow).Value = ws.Range("C2:C" & endRow).Value
    ' 描画再開
    Application.ScreenUpdating = True
End Sub

 

コードの解説

最下行の取得

最下行の取得は一番下までデータが入っていると思わしき列の番号を選択します。 ここでは、B列の氏名は必ず入っているという前提で、B列=2(列目)を指定しています。

 

関数の入力

メインですよね!ポイントが二つあります! 1.”C2:C”と記載がある部分はC2からCの最後の行までデータを埋めるという意味合いなので、任意で範囲指定しましょう! 2.ダブルクォーテーションは一つ余計につけましょう!

 

値貼り付け

VBAの値貼り付けって、いくつか方法があるのですが、わたしが一番簡単だと思う方法を記載しています! これは、関数を入力した範囲の値(Value)を全く同じ範囲に値(Value)で貼り付けているというコードです。 このやり方が一番簡単で、速いのでお勧めです!!

 

さいごに

実行した結果、C3~C11まで数式を埋めることができました!簡単!

重要なポイントを押さえつつ使ってみてください!

 

ではまた!