VBA – マクロで連続データを作成する(オートフィル)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 8月 1, 2022

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)をオートフィルするマクロを実行します。

VBA AutoFill Numbers

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は与えられた元のデータから入力するデータの種類を決定します。

VBA AutoFill Constants オートフィル 定数

ただし、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”)に単純にコピーします。

VBA AutoFill Copy

xlFlashFillを使ったオートフィル

Excelでテキストを列に変換する必要がある場合、テキストを列に変換するオプションを使用するか、フラッシュフィルというオプションを使用することができます。 これはVBAで非常に便利です。

次のようなデータを見てみましょう。

VBA AutoFill Text

セル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

VBA AutoFill FlashFill

これを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 AutoFill TextSeparated

VBAのコーディングが簡単に

VBAのコードをネットで探すのはもうやめましょう。AutoMacro – A VBA Code Builderについてもっと知る – 初心者が最小限のコーディング知識でゼロから手順をコーディングでき、すべてのユーザーのために多くの時間節約機能を備えています! alt text もっと詳しく

<<VBAのサンプルに戻る

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples