Excel VBA セル範囲に連続データを作成する DataSeries メソッド

スポンサーリンク

DataSeries【データシリーズ】 メソッド

指定したセル範囲に、連続データを作成するには、セルを表すRange【レンジ】オブジェクトの
DataSeries【データシリーズ】 メソッドを使用します。

DataSeries【データシリーズ】 メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.DataSeries[( Rowcol, Type, Date, Step, Stop, Trend )]

  • オブジェクト(必須)
    連続データを作成するセル範囲をRange【レンジ】オブジェクトで指定します。
  • Rowcol【ロウカラム】(省略可能)
    連続データの方向を以下の定数で指定します。

    定数内容
    xlRows行方向
    xlColumns列方向

    省略した場合は、Raneg【レンジ】オブジェクトで指定した範囲が使用されます。

  • Type【タイプ】(省略可)
    連続データの種類をXlDataSeriesType列挙型の定数で指定します。

    XlDataSeriesType列挙型
    定数内容
    xlDataSeriesLinear-4132加算と仮定して値を指定します
    例えば、’1, 2′ の場合は、’3, 4, 5′ となります
    xlGrowth2乗算と仮定して値を指定します
    例えば、、’1, 2′ の場合は、’4, 8, 16′ となります
    xlChronological3日付の値を入力します
    xlAutoFill4オートフィル設定に従って
    連続データを入力します
  • Date【デイト】(省略可)
    引数 Type が xlChronological(日付) のとき日付の増加単位をXlDataSeriesDate列挙型の定数で指定します。

    XlDataSeriesDate列挙型
    定数内容
    xlDay1
    xlWeekday2平日
    xlMonth3
    xlYear4
  • Step【ステップ】(省略可)
    連続データの加算値を設定します。既定値は 1 です。
  • Stop【ストップ】(省略可)
    連続データの停止位置をRangeオブジェクトで設定します。省略した場合は、対象セル範囲の終端まで繰り返されます。
  • Trend【トレンド】(省略可)
    対象セル範囲に入力されている値を元に予測した値を入力する方法をブール型の値で指定します。

    設定値内容
    True直線(加算)または指数曲線(乗算)に当てはめて
    予測した結果で残りのセルを埋めます
    False標準の連続データを作成します。

    省略した場合はFalseです。


データを一時的に並べ替えをして元に戻す方法

他の人が管理しているブックに、どのような意図かわからない順番で並んでいる表がある場合
一時的に他の順番でデータを並べ替えて内容を確認したあと元の順番に戻したい場合があると思います。

このような場合は、一時的に並べ替え用の列を作成し、そこに元の順番で連番を振っておきます。

目的に応じて並べ替え作業が終わったら連番を作成した列で並べ替えれば元の順番に戻ります。

データ範囲の最後の列の次の列に連番を作成するコードと解説

Sub 連番作成()
Dim データ範囲 As Range
Set データ範囲 = Range("A1").CurrentRegion
With データ範囲.Columns(1).Offset(0, データ範囲.Columns.Count)
               .Cells(1).Value = 0
               .Cells(2).Value = 1
               .DataSeries Type:=xlDataSeriesLinear
               .Cells(1).Value = "元の順番"
End With
End Sub
2行目【Dim データ範囲 As Range】
データの入力されている表範囲を格納する変数「データ範囲」をオブジェクト型(Range)で宣言します。


3行目【Set データ範囲 = Range(“A1”).CurrentRegion】
Range【レンジ】オブジェクトのCurrentRegion【カレントリージョン】プロパティ使用してA1セルから始まるデータ範囲を取得してオブジェクト変数「データ範囲」にSetキーワードを使用して代入します。


4行目【With データ範囲.Columns(1).Offset(0, データ範囲.Columns.Count)】
データ範囲のColumns【カラムズ】プロパティの引数に1を設定して、データ範囲の1列目を指定します。指定したデータ範囲の1列目を基準としてOffset【オフセット】プロパティを使用して引数の列方向の移動をデータ範囲の列の集まりを表すColumns【カラムス】コレクションのCount【カウント】プロパティを使用して
データ範囲の列数を取得して設定し、With【ウィズ】ステートメントで指定します。

結果的にデータ範囲の最終列の次の列が参照されます。


5行目【.Cells(1).Value = 0】
With【ウィズ】ステートメントで指定したデータ範囲の最終列の次の列をCells【セルズ】プロパティで引数を1に設定し、その行の1行目のセルを参照して
Value【バリュー】プロパティを使用して0を代入します。


6行目【.Cells(2).Value = 1】
With【ウィズ】ステートメントで指定した、データ範囲の最終列の次の列Cells【セルズ】プロパティで引数を2に設定し、その行の2行目のセルを参照してValue【バリュー】プロパティを使用して1を代入します。


7行目【.DataSeries】
With【ウィズ】ステートメントで指定したデータ範囲の最終列の次の列をDataSeries【データシリーズ】メソッドを使用して、1行目のセルの値0と、2行目のセルの値1を基準に連番を作成します。

連続データの種類を設定する引数Typeには、加算データと仮定するxlDataSeriesLinearを設定します。その他の引数は既定値なので省略します。


8行目【.Cells(1).Value = “元の順番”】
With【ウィズ】ステートメントで指定したデータ範囲の最終列の次の列の1行目のセル(5行目で0を代入したセル)にValue【バリュー】プロパティを使用して文字列を代入します。


実行結果


以上で、セル範囲に連続データを作成する DataSeries 【データシリアル】メソッドについての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告