VBA – マクロで連続データを作成する(オートフィル)
In this Article
VBAにおけるオートフィル(連続データの作成)
この記事では、VBAでオートフィルを行う方法を説明します。
オートフィルは、データが繰り返し使用される場合や、規則性のある連続したデータ(曜日、日付、年の月など)である場合に、Excelでよく使用される優れたツールです。 通常、最初の数セルに必要なデータを入力し、次にオートフィルを使用して必要なデータを選択した範囲にコピーします。 これはすべてVBAマクロを使用して行うことができます。
数値の増分を使ったオートフィル
まず、このコードでは、2つのRange変数を宣言します。
Selection1 は、オートフィルを行うデータの範囲、例えば 1 と 2 です。
Selection2は、オートフィルを行う範囲全体で、最初の範囲とオートフィルを行う空白を含んでいます。
次に、AutoFill メソッドを使用して、2 番目の選択範囲を塗りつぶします。
Public Sub MyAutoFill()
'by AutomateExcel.com
'Range変数を宣言する
Dim selection1 As Range
Dim selection2 As Range
'Range変数をそれぞれ設定する
Set selection1 = Sheet1.Range("A1:A2")
Set selection2 = Sheet1.Range("A1:A12")
'オートフィルを行う
selection1.AutoFill Destination:=selection2
End Sub
続いて、範囲(A1:A12)をオートフィルするマクロを実行します。
AutoFillメソッドを使用する場合、実行したいオートフィルの種類を選択することができます。 上記の例では、オートフィルの種類を指定していないため、デフォルトの種類が使用されています(この場合、各行の数字が 1 ずつ増加します)。
月を使ったオートフィル
月を使ったオートフィルのマクロは、数字を増加させるマクロとほとんど同じですが、ひとつだけ重要な例外があります。
Public Sub AutoFillMonths()
'by AutomateExcel.com
'Range変数を宣言する
Dim selection1 As Range
Dim selection2 As Range
'Range変数をそれぞれ設定する
Set selection1 = Sheet1.Range("A1:A2")
Set selection2 = Sheet1.Range("A1:A12")
'月をオートフィルする
selection1.AutoFill Destination:=selection2, Type:=xlFillMonths
End Sub
オートフィルの種類を記入する際に、Excelの定数をいくつか選択できるようになっています。 これを省略すると、Excelは与えられた元のデータから入力するデータの種類を決定します。
ただし、Excelでは、月、曜日、増分値などの標準的な系列は、Type引数を使わなくても取得することができます。
xlFillCopyを使ったオートフィル
新しいセルに情報をコピーするオートフィルマクロを使用したい場合、xlFillCopy 定数を使用することができます。
Public Sub AutoFillCopy()
Dim Selection1 As Range
Dim Selection2 As Range
Set Selection1 = Sheet1.Range("A1:A1")
Set Selection2 = Sheet1.Range("A1:A12")
Selection1.AutoFill Destination:=Selection2, Type:=xlFillCopy
End Sub
このマクロを実行すると、以降のセルを連続したデータとしてオートフィルするのではなく、Range(“A1”)の文字列「Jan」をRange(“A1:A12”)に単純にコピーします。
xlFlashFillを使ったオートフィル
Excelでテキストを列に変換する必要がある場合、テキストを列に変換するオプションを使用するか、フラッシュフィルというオプションを使用することができます。 これはVBAで非常に便利です。
次のようなデータを見てみましょう。
セルB2に Tolley という苗字を入力し、マクロで残りのデータをフラッシュフィルすることができます。
Sub FlashFill()
Dim Selection1 As Range
Dim Selection2 As Range
Set Selection1 = Range("B2:B2")
Set Selection2 = Range("B2:B15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
End Sub
これをC列、D列、E列に繰り返すと、残りのデータが得られます。
Set Selection1 = Range("C2:C2")
Set Selection2 = Range("C2:C15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
Set Selection1 = Range("D2:D2")
Set Selection2 = Range("D2:D15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
Set Selection1 = Range("E2:E2")
Set Selection2 = Range("E2:E15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
すると、2行目の値に基づいて、各列が適切なデータで満たされます。
VBAのコーディングが簡単に
VBAのコードをネットで探すのはもうやめましょう。AutoMacro – A VBA Code Builderについてもっと知る – 初心者が最小限のコーディング知識でゼロから手順をコーディングでき、すべてのユーザーのために多くの時間節約機能を備えています! もっと詳しく