Sponsored Links
こんにちは!Lenocoです。本日も見てくださりありがとうございます。
今回は連番を振るマクロです!
Sponsored Links
Contents
指定シートの指定セルから連番を振るマクロ
例えば以下の図のようにB列にデータが入っているとします。
A列に連番を振りたいと思ったときに、どのようなマクロを組むでしょうか?
このくらいのデータなら、Forなどのループを使って1から順に入れていくのもありかと思います。
ですが、何万行とデータがあったときにループを使うのは非常に時間がかかってしまいます。
手作業でやる場合、オートフィルを使うと思います。
マクロでもオートフィルを使うことができるので、やってみましょう!!
手動でオートフィルを使う動きと似ているので、イメージしながら見てみてください。
汎用性を高めるため、メインのプロシージャから連番を振るマクロを呼び出すコードにしています。必要に応じて呼び出し側の引数を変更してください。
コード
Sub Main()
Call AssignNumber(ActiveSheet, Range("A2"))
End Sub
Sub AssignNumber(sh As Worksheet, rng As Range)
Dim endRow As Long
rng = 1
rng.Offset(1, 0) = 2
endRow = rng.Offset(, 1).End(xlDown).Row '下方向に最終行を検索する
sh.Range(rng, rng.Offset(1, 0)).AutoFill Destination:=Range(rng, sh.Cells(endRow, rng.Column))
End Sub
コードの説明
●呼び出し元のプロシージャ
連番を振るプロシージャをCallで呼び出します。
引数は対象のシートと、連番を振る最初のセルの2つです。
シートはアクティブシート、セルはA2セルを指定しています。
(必要に応じて変更してくださいね)
●呼び出し先のプロシージャ(連番を振るマクロ)
最終行を入れる変数を用意します。
引数で指定された連番を振る最初のセルに「1」を入れます。
Offisetを使い、1つ下のセルに2を入れます。
1つ右の列の最終行を取得します。
AutoFillメソッドを使い、連番開始セルと最終行のセルを指定して
連番を入力します。
さいごに
手作業でオートフィルを使う動きと似ているため、イメージしやすいのではないでしょうか。
ぜひ使ってみてください!
Lenoco
Sponsored Links