HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 増分値・最終値を指定して連続データを作成する(DataSeriesメソッド)

増分値・最終値を指定して連続データを作成する(DataSeriesメソッド)|Excel VBA

セル操作関連のテクニック

増分値・最終値を指定して連続データを作成する(DataSeriesメソッド)

(Excel 2007/2010/2013)

Excelで連続したデータを作成するときは、オートフィル機能が便利です。
日付の場合、「1日おきの」の連続データのほか、「1か月おき」や「1年おき」のデータも作成できます。
たとえば、セルA1に「2014/8/5」と入力して、フィルハンドルをドラッグします。マウスのボタンを放すとコンテキストメニューが表示されて、[連続データ(月単位)]を選択すると次のように1か月おきのデータを作成できます。

これをマクロで実現するには2つの方法があります。
1つは、AutoFillメソッドの引数Typeに「xlFillMonths」を指定する方法です。
AutoFillメソッドを使った連続データの作成方法は、「連続データを作成する(AutoFillメソッド)」を参照してください。

もう1つは、RangeオブジェクトのDataSeriesメソッドを使う方法です。
DataSeriesメソッドとAutoFillメソッドでできることは、ほとんど変わりません。
主な違いは、DataSeriesメソッドでは増分値を指定できることでしょう。
次のコードは「2か月ごと」の連続データをセルA1:A5に作成します。

Sub Sample()
    Range("A1").Value = "2014/8/5"
    Range("A1:A5").DataSeries Type:=xlChronological, _
                            Date:=xlMonth, _
                            Step:=2
End Sub

また、引数Stopを指定すると特定の値まで連続データを作成できます。
作成するデータのセル範囲、つまりデータの個数をあらかじめ指定することなく連続データを作成するのに便利です。
起点となるセルだけを指定する場合は、データの方向を引数Rowcol(行方向:xlRows、列方向:xlColumns)で指定します。
次のコードは「2016年8月末日」までの「2か月ごと」の日付を列方向に作成します。

Sub Sample2()
    Range("A1").Value = "2014/8/10"
    Range("A1").DataSeries Rowcol:=xlColumns, _
                        Type:=xlChronological, _
                        Date:=xlMonth, _
                        Step:=2, _
                        Stop:=DateSerial(2016, 8, 31)
End Sub