目次
目的
- 行方向、列方向に連番を入力したい。
- 途中の行、列からスタートする連番を入力したい。
- 100 列目から 5 個の連番を入力したい。
- ワークシート関数の row と column を使用する。
テストしてみました。
セルに row と column の数式を入力するマクロなので、データの並べ替えを行っても連番は変わらないので用途によっては不便かもしれません。
数式を入力する事で再計算が増えるので大量のデータには向いていないかもしれません。
マクロの一例
下記のマクロを作成してみました。 A1:A5 の範囲に連番を入力するマクロになっています。ワークシート関数の row を使用しています。
Sub ワークシート関数のrow関数で連番入力()
Range("A1:A5").Formula = "=row()" 'row 関数で行番号を取得している
End Sub
上記マクロを、下記の白紙のワークシートで実行してみます。
マクロの実行結果は以下のようになりました。上記マクロの「.Formula」の記述を省いても同じ結果になるようです。
A1:A5 の範囲に「=row()」の数式が入力されています。
次は、 A6 から 1 がスタートする連番を入力してみます。 row 関数のパラメーターに A1 を指定しているので A1 の行番号 1 が取得されるようです。
上記マクロに続けて実行してみます。
Sub A6から連番スタート()
Range("A6:A10").Formula = "=row(A1)" ' 1 からスタートします
End Sub
マクロの実行結果は以下のようになりました。
行番号マイナス 5 としても同じ結果になるようです。
Sub 行番号マイナス5()
Range("A6:A10").Formula = "=row()-5"
End Sub
列方向の場合
column 関数で列方向の連番を入力してみます。まずは、ワークシートの内容を消去してリセットしておきます。下記マクロを実行してみます。
Sub セル内容消去()
Cells.Clear '全セル内容消去
End Sub
マクロの実行結果は以下のようになりました。
列方向に連番を入力する下記マクロを作成してみました。
Sub ワークシート関数のcolumn関数で連番入力()
Range("A1:E1").Formula = "=column()" 'column 関数の数式で列番号を取得している
Range("A1:E1").Columns.AutoFit '列幅自動調整
End Sub
マクロの実行結果は以下のようになりました。
A1:E1 の範囲に「=column() 」の数式が入力されています。
行方向の時と同じく、連番の開始位置をオフセットしてみます。 A1 セルの列番号 1 からスタートします。
Sub F1から連番スタート()
Range("F1:J1").Formula = "=column(A1)" ' 1 からスタート
Range("F1:J1").Columns.AutoFit
End Sub
マクロの実行結果は以下のようになりました。
あとがき
私の場合、 100 列目から 5 つの連番と聞くと、 105 列目までだと思ってしまいます。
Resize プロパティを使用すると、列数でデータの個数を表せるので、便利かもしれません。
Sub 一行目の100列目から5つの連番()
Cells(1, 100).Resize(, 5).Formula = "=column(a1)" '5 列分
Debug.Print Cells(1, 100).Resize(, 5).Address '$CV$1:$CZ$1
Debug.Print Range("cv1").Column '100
Debug.Print Range("cz1").Column '104
Cells(1, 100).Resize(, 5).Columns.AutoFit '列幅自動調整
End Sub
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。