【コピペOK】「手首と指先大丈夫?」VBAのオートフィルで1万行を一瞬で埋める方法

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

突然ですが、Excelでデータを作るとき、セルの右下にある「+(プラス)」マークをマウスで掴んで、ずっと下まで引っ張っていませんか?

あれ、行数が10行や20行ならいいんです。でも、仕事をしていると、1,000行とか10,000行のデータを扱うこと、よくありますよね。

マウスをドラッグしたままフリーズしたり、行き過ぎて戻ったり、途中で指を離してしまったり……。

今日は、「VBAでオートフィル(自動入力)をする方法」をお伝えします。

「ミスしない安心感」はプライスレスです。

基本のコード:Range.AutoFill

さっそくコードを見てみましょう。

VBAでは AutoFill という命令を使います。

これは、Excelのメニューにある「オートフィル」機能と同じ動きをプログラムで行うものです 。

例えばA列に商品名が入っています。B列に「1, 2, 3…」と連番を振りたいとします。

B1セルに「1」、B2セルに「2」と入力した状態で、以下のコードを実行します。

Sub AutoFill_SerialNumbers()
    Dim lastRow As Long
   
    ' A列のデータの最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
   
    ' B1:B2のパターンを元に、最終行までオートフィルを実行
    Range("B1:B2").AutoFill Destination:=Range("B1:B" & lastRow)
   
    MsgBox "連番の入力が完了しました!", vbInformation
End Sub

解説:ここがポイント!

ポイントは「どこまでやるか(最終行)」を自動で見つけることです。

コードの中にある Cells(Rows.Count, 1).End(xlUp).Row という部分は、「A列の一番下のデータはどこ?」とExcelに聞いています。

これがあるおかげで、データが100行でも1万行でも、勝手に長さを調節してくれます。

マウスでダブルクリックしたオートフィルだとA列の途中で空白があるとそこで止まってしまいますが、これなら大丈夫です。

応用:数式を一気に反映させる

オートフィルをよく使うのは、一度組んだ関数などの「数式のコピー」ですよね。

例えば、C列に 単価 × 数量 の計算式が入っているとして、それを下まで反映させてみましょう。

Sub AutoFill_Formula()
    Dim lastRow As Long
   
    ' A列を基準に最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
   
    ' C2セルに入っている数式を、最終行までオートフィル
    Range("C2").AutoFill Destination:=Range("C2:C" & lastRow), Type:=xlFillDefault
   
    MsgBox "計算式のコピーが終わりました!”, vbInformation
End Sub

これを標準モジュールにコピペして実行してみてください。

一瞬ですべての行に計算式が入ります。


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました