⚡
AutoFillSeries
自動化選択セルの値を起点に連続データを下方向に自動入力します
指定した開始値からステップ値ずつ増加または減少する連続データを、指定した件数分自動入力するマクロです。日付の連続・曜日の繰り返し・数値の等差数列・月名の連続など様々なパターンの連続データを素早く生成できます。Excelのオートフィル機能のVBA版で、大量データの生成やテンプレート作成の際に活躍します。ユーザーがダイアログで開始値・ステップ・件数を指定するだけで処理が完了します。内部ではRange.DataSeriesメソッドまたはStep値を使ったループ処理で連続データを生成しており、Excel標準のオートフィルハンドルをドラッグする操作と同じ結果を再現します。AutoNumberRowsが「行の連番」に特化しているのに対し、本マクロは日付・数値・文字列など幅広いパターンに対応できる汎用性が特徴です。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 起点となるセルを選択してから AutoFillSeries を実行します
🎯 活用シーン
- ✓スケジュール表の日付欄に1月1日から12月31日まで365日分の日付を一括入力して、年間カレンダーを素早く作成したいとき
- ✓実験データやサンプルデータとして1から1000まで等差数列を素早く生成して、テスト用のデータセットを用意したいとき
- ✓月次レポートの見出し行に「1月・2月・3月…12月」と12ヶ月分の月名を一括入力して、テンプレートを完成させたいとき
- ✓会員番号や伝票番号など、規則性のある識別子を大量に生成したいとき
- ✓研修用のダミーデータセットを短時間で用意して、Excel演習教材を作成したいとき
💡 実装のヒント
- ▸日付の連続データを入力する場合は、開始日をシリアル値または日付文字列で指定できます。ステップに「1」を指定すれば翌日の日付が順に入力されます。
- ▸曜日や月名などの文字列の連続データはExcelのカスタムリスト機能を利用しているため、カスタムリストに登録されたパターンであれば自動的に繰り返し入力されます。
- ▸大量のデータを一度に生成する場合は処理速度を考慮してください。Application.ScreenUpdatingをFalseに設定してから実行すると高速化できます。
- ▸等比数列(倍々に増加するデータ)を生成したい場合は、Stepを乗算処理に変更したロジックへカスタマイズしてください。
- ▸生成する件数が多い場合はApplication.ScreenUpdatingをFalseにしてから実行すると処理が高速化します。
💻 VBAコード
' AutoFillSeries
' -----------------
' Macro Name: AutoFillSeries
' Description: 選択セルの値を起点に連続データを下方向に自動入力します
' Parameters: なし
' Returns: なし
' Usage: 起点となるセルを選択してから AutoFillSeries を実行します
' -----------------
Sub AutoFillSeries()
On Error GoTo ErrorHandler
Dim startCell As Range
Dim countStr As String
Dim fillCount As Long
Dim fillRange As Range
If TypeName(Selection) <> "Range" Then
MsgBox "起点セルを選択してから実行してください", vbCritical, "エラー"
Exit Sub
End If
Set startCell = Selection.Cells(1, 1)
countStr = InputBox("入力する件数を入力してください", "件数", "10")
If countStr = "" Then Exit Sub
If Not IsNumeric(countStr) Then
MsgBox "数値を入力してください", vbCritical, "エラー"
Exit Sub
End If
fillCount = CLng(countStr)
Set fillRange = startCell.Resize(fillCount, 1)
startCell.AutoFill Destination:=fillRange, Type:=xlFillSeries
MsgBox fillCount & " 件の連続データを入力しました", vbInformation, "完了"
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub