【VBA】オートフィル機能を使う

2022年3月25日

オートフィル機能と言えば、
連続したデータを記入する際に使用する、あの

セル右下に出てくるポチ”部分を引き延ばす

この作業を思い浮かべるのではないでしょうか?
今回はいろんなシチュエーションのオートフィルを、
例題を交えてVBAサンプルコードを記載します。
 

広告

AutoFillメソッドって?

このメソッドの構成は以下の通りです。

VBA_AutoFIll_10

引数①= オートフィルの範囲
引数②= オートフィルの種類 を設定して

連続データや規則性にのっとって、
データを任意の範囲に埋め込むメソッドです。
構成要素の引数②で使用できる定数は以下の通りです。

    定数          フィルの内容  
xlFillDefault自動的に適切な種類が選択される
xlFillSeries連続データ
xlFillCopyセルのコピー
xlFillValues書式なしコピー
xlFillFormats書式のみコピー
xlLinearTrend加算
xlGrowthTrend乗算
xlFillYears
xlFillMonths
xlFillWeekdays週日
xlFillDays

それでは例題と共にコードサンプルをご覧ください。
以降では実際の処理画面を見ながら解説します。
 

連続したデータを埋め込む場合

VBA_AutoFIll_1
セル【C2】から右へ「年」を展開する場合
VBA_AutoFIll_7
セル【B3】から下へNo.を展開する場合
‘【C2】から右方向へ連続するデータを展開する
Range("C2").AutoFill Destination:=Range("C2:I2"), Type:=xlFillSeries
‘【B3】から下方向へ連続するデータを展開する
Range("B3").AutoFill Destination:=Range("B3:B7"), Type:=xlFillSeries

↑の画面のように、連続したデータを下部もしくは右側へ展開するのが、日常業務での主たる作業かと思います。この記述ならば上記のソースコードで可能です。ちなみに、上・左への逆展開も可能です。上・左方向の場合は数字も遡るように記載されます。

VBA_AutoFIll_9
‘【I2】から左方向へ連続する(遡る)データを展開する
Range("I2").AutoFill Destination:=Range("C2:I2"), Type:=xlFillSeries
‘【B7】から上方向へ連続する(遡る)データを展開する
Range("B7").AutoFill Destination:=Range("B3:B7"), Type:=xlFillSeries

 

引数(Type:=xlFillSeries)を設定しなかった場合

VBA_AutoFIll_8

設定しないと、PCも規則性を捉えることが出来ずに、上のように、ただコピーするだけにとどまってしまいます。連続データを記入したい場合は、省略せずに引数(Type:=xlFillSeries)を設定してください。
 

〇ずつ増加する規則性のあるデータを埋め込む場合

VBA_AutoFIll_2
セル【C2】から右へ「年」を3年きざみで展開する場合
VBA_AutoFIll_3
セル【B3】から下へNo.を3つずつ増える値を展開する場合
‘【C2】から右方向へ連続するデータを展開する
Range("C2:D2").AutoFill Destination:=Range("C2:I2"), Type:=xlFillSeries
‘【B3】から下方向へ連続するデータを展開する
Range("B3:B4").AutoFill Destination:=Range("B3:B7"), Type:=xlFillSeries

規則をPCに認識させるために、はじめの2つのセルにはデータを記入しておかなければ(或いはコード上で記入しておかなければ)いけません。ちなみに、この「〇ずつ増加する規則性のあるデータを埋め込む」事は数字だけではなく、日付にも適応できます。
 

連続した日付データを埋め込む場合

VBA_AutoFIll_4
セル【B3】からデータを展開する場合
VBA_AutoFIll_6
‘①「1日」ずつスライドさせる。(引数設定なし)
Range("B3").AutoFill Destination:=Range("B3:B7")

‘②「1年」ずつスライドさせる
Range("B3").AutoFill Destination:=Range("B3:B7"), Type:=xlFillYears

‘③「1ヵ月」ずつスライドさせる
Range("B3").AutoFill Destination:=Range("B3:B7"), Type:=xlFillMonths

‘④「1日」ずつスライドさせる
Range("B3").AutoFill Destination:=Range("B3:B7"), Type:=xlFillDays

‘⑤「週日」ずつスライドさせる
Range("B3").AutoFill Destination:=Range("B3:B7"), Type:=xlFillWeekdays

日付の場合、特に引数(, Type:=xlFill※※)を設定していなくても、「日」を1日ずつ進めて入力してくれます。が、通常は上記のコードのように引数②を設定し、画像のような結果がそれぞれ得られます。
 

乗算のデータを埋め込む場合

VBA_AutoFIll_11
セル【B3:B4】のデータを習得し、展開する場合
Range("B3:B4").AutoFill Destination:=Range("B3:B7"), Type:=xlGrowthTrend

セル【B3】と【B4】には3倍の数字になっているので、その傾向を踏まえて、「1x3=3」「3x3=9」「9x3=27」「27x3=81」といった具合に変化させる事が出来ます。

以上、説明が必要そうなものをピックアップしてお届けしました。何かのお役に立てれば幸いです。

広告