【VBA】オートフィル機能を使う
オートフィル機能と言えば、
連続したデータを記入する際に使用する、あの
“セル右下に出てくるポチ”部分を引き延ばす
この作業を思い浮かべるのではないでしょうか?
今回はいろんなシチュエーションのオートフィルを、
例題を交えてVBAサンプルコードを記載します。
AutoFillメソッドって?
このメソッドの構成は以下の通りです。
引数①= オートフィルの範囲
引数②= オートフィルの種類 を設定して
連続データや規則性にのっとって、
データを任意の範囲に埋め込むメソッドです。
構成要素の引数②で使用できる定数は以下の通りです。
定数 | フィルの内容 |
xlFillDefault | 自動的に適切な種類が選択される |
xlFillSeries | 連続データ |
xlFillCopy | セルのコピー |
xlFillValues | 書式なしコピー |
xlFillFormats | 書式のみコピー |
xlLinearTrend | 加算 |
xlGrowthTrend | 乗算 |
xlFillYears | 年 |
xlFillMonths | 月 |
xlFillWeekdays | 週日 |
xlFillDays | 日 |
それでは例題と共にコードサンプルをご覧ください。
以降では実際の処理画面を見ながら解説します。
連続したデータを埋め込む場合
‘【C2】から右方向へ連続するデータを展開する
Range("C2").AutoFill Destination:=Range("C2:I2"), Type:=xlFillSeries
‘【B3】から下方向へ連続するデータを展開する
Range("B3").AutoFill Destination:=Range("B3:B7"), Type:=xlFillSeries
↑の画面のように、連続したデータを下部もしくは右側へ展開するのが、日常業務での主たる作業かと思います。この記述ならば上記のソースコードで可能です。ちなみに、上・左への逆展開も可能です。上・左方向の場合は数字も遡るように記載されます。
‘【I2】から左方向へ連続する(遡る)データを展開する
Range("I2").AutoFill Destination:=Range("C2:I2"), Type:=xlFillSeries
‘【B7】から上方向へ連続する(遡る)データを展開する
Range("B7").AutoFill Destination:=Range("B3:B7"), Type:=xlFillSeries
引数(Type:=xlFillSeries)を設定しなかった場合
設定しないと、PCも規則性を捉えることが出来ずに、上のように、ただコピーするだけにとどまってしまいます。連続データを記入したい場合は、省略せずに引数(Type:=xlFillSeries)を設定してください。
〇ずつ増加する規則性のあるデータを埋め込む場合
‘【C2】から右方向へ連続するデータを展開する
Range("C2:D2").AutoFill Destination:=Range("C2:I2"), Type:=xlFillSeries
‘【B3】から下方向へ連続するデータを展開する
Range("B3:B4").AutoFill Destination:=Range("B3:B7"), Type:=xlFillSeries
規則をPCに認識させるために、はじめの2つのセルにはデータを記入しておかなければ(或いはコード上で記入しておかなければ)いけません。ちなみに、この「〇ずつ増加する規則性のあるデータを埋め込む」事は数字だけではなく、日付にも適応できます。
連続した日付データを埋め込む場合
‘①「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日ずつ進めて入力してくれます。が、通常は上記のコードのように引数②を設定し、画像のような結果がそれぞれ得られます。
乗算のデータを埋め込む場合
Range("B3:B4").AutoFill Destination:=Range("B3:B7"), Type:=xlGrowthTrend
セル【B3】と【B4】には3倍の数字になっているので、その傾向を踏まえて、「1x3=3」「3x3=9」「9x3=27」「27x3=81」といった具合に変化させる事が出来ます。
以上、説明が必要そうなものをピックアップしてお届けしました。何かのお役に立てれば幸いです。