マウスドラッグでの連続データ(オートフィル)
セルに入力したデータをマウスでドラッグすると簡単に連番データなどが作成できます。
この連続データ作成機能を「オートフィル」と言います。
Excelでは「ホームタブ→編集→フィル」で操作できます。
同じことをVBAでも行うことができます。
AutoFillメソッド
連続データを作成するにはRangeオブジェクトのAutoFillメソッドを利用します。
引数にデータ書き込み先のRangeオブジェクトと、連続データの種類を設定します。
構文
1 |
expression.AutoFill(Destination, [Type]) |
expression:開始セル
連続データの基点となるセル範囲を指定します。
Destination:開始から終点までのセル範囲
基点セル範囲からオートフィルでの終点となるデータ書き込み先のセルまでの範囲(基点から終点の範囲)をRangeオブジェクトで指定します。
Type:連続データの種類
連続するデータの種類をXlAutoFillType列挙型の定数で指定します。
省略可能です。省略した場合はデータの内容に合わせて自動的に種類が設定されます。
定数 | 値 | 設定内容 | 設定例 |
---|---|---|---|
xlFillDefault(既定値) | 0 | 標準オートフィル | セルの状態で自動設定される |
xlFillSeries | 2 | 連続データ | 1, 5, 9, 13, 17(1, 5を基点にして4ずつ増加) |
xlFillCopy | 1 | コピー | 1, 1, 1, 1, 1(1を基点にコピー) |
xlFillFormats | 3 | 書式のみコピー | 基点セルの書式のみをコピー |
xlFillValues | 4 | 書式なしコピー | 基点セルの値のみをコピー |
xlFillYears | 8 | 年単位 | 2017/1/1, 2018/1/1, 2019/1/1 |
xlFillMonths | 7 | 月単位 | 2017/1/1, 2017/2/1, 2017/3/1 |
xlFillDays | 5 | 日単位 | 2017/1/1, 2017/1/2, 2017/1/3 |
xlFillWeekdays | 6 | 平日単位 | 2017/8/31, 2017/9/1, 2017/9/4(9/2=土曜、9/3=日曜は未出力) |
xlLinearTread | 9 | 加算 | 1, 2, 3, 4, 5(1を基点にして1ずつ増加) |
xlGrowthTrend | 10 | 乗算 | 1, 2, 4, 8, 16(1, 2を基点にして2乗を算出) |
xlFlashFill | 11 | 前回入力操作(Excel2013以降) | A列にメールアドレスがあり、A1セルに「a.b@test.com」とあり、B1セルで「a b」と入力した状態で、B2セル以降もA列を参照してB1セル同様に連続データを作成します |
サンプルコード
各Typeの設定例です。下の画像が実行前と実行後になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub AutoFillTest() Call Range("A2").AutoFill(Range("A2:A6"), xlFillDefault) Call Range("B2:B3").AutoFill(Range("B2:B6"), xlFillSeries) Call Range("C2").AutoFill(Range("C2:C6"), xlFillCopy) Call Range("D2").AutoFill(Range("D2:D6"), xlFillFormats) Call Range("E2").AutoFill(Range("E2:E6"), xlFillValues) Call Range("F2").AutoFill(Range("F2:F6"), xlFillYears) Call Range("A10").AutoFill(Range("A10:A14"), xlFillMonths) Call Range("B10").AutoFill(Range("B10:B14"), xlFillDays) Call Range("C10").AutoFill(Range("C10:C14"), xlFillWeekdays) Call Range("D10").AutoFill(Range("D10:D14"), xlLinearTrend) Call Range("E10:E11").AutoFill(Range("E10:E14"), xlGrowthTrend) End Sub |
実行前です。
実行後です。それぞれ5つずつ連続データを作成しています。