Categories: VBA基礎

EXCEL VBA AutoFill(連続データの作成・セルの複写)

EXCEL VBA AutoFill (連続データの作成・セルの複写)

 

●はじめに
ここでは、EXCELでお馴染みのオートフィル(AutoFill)をEXCEL VBAでの使い方を説明いたします。EXCELでオーフィルを利用する場合、月・火・水・木・金・土・日や連測した数字を作成する場合に利用する便利な機能ですが、EXCEL VBAでもAutoFillが利用できます。特に表を作成する先にとても便利な機能なので、効率よく表を作成する事もできますので、順番に説明いたします。

 

●書式の説明
Rangeオブジェクト.AutoFill(Destination:セルの範囲 連続データの種類

 

●次に、AutoFillの定数の種類を説明します。下記に一覧表を作成しましたので、参照してください。

 

定数説明
xlFillDefault標準のオートフィル(既定値)
xlFillCopyコピー(値・書式)
xlFillSeries連続データ
xlFillFormats書式のみコピー
xlFillValues書式なしのコピー
xlFillDays日単位の連続データ
xlFillWeekdays土日を除く平日
xlFillMonths月単位の連続データ
xlFillYears年単位の連続データ
xlLinearTrend連続データ(加算)
xlGrowthTrend連続データ(乗算)

 

Sub AutoFill()

    '標準のオートフィル(既定値)
    Range("A1").AutoFill Destination:=Range("A1:A10"), Type:=xlFillDefault
    
    'コピー(値・書式)
    Range("B1").AutoFill Destination:=Range("B1:B10"), Type:=xlFillCopy
    
    '連続データ
    Range("C1").AutoFill Destination:=Range("C1:C10"), Type:=xlFillSeries
    
    '書式のみコピー
    Range("D1").AutoFill Destination:=Range("D1:D10"), Type:=xlFillFormats
    
    '書式なしのコピー
    Range("E1").AutoFill Destination:=Range("E1:E10"), Type:=xlFillValues
    
    '日単位の連続データ
    Range("F1").AutoFill Destination:=Range("F1:F10"), Type:=xlFillDays
    
    '土日を除く平日
    Range("G1").AutoFill Destination:=Range("G1:G10"), Type:=xlFillWeekdays
    
    '月単位の連続データ
    Range("H1").AutoFill Destination:=Range("H1:H10"), Type:=xlFillMonths
    
    '年単位の連続データ
    Range("I1").AutoFill Destination:=Range("I1:I10"), Type:=xlFillYears
    
    '連続データ(加算)
    Range("J1").AutoFill Destination:=Range("J1:J10"), Type:=xlLinearTrend

    '連続データ(乗算)
    Range("K1:k2").AutoFill Destination:=Range("K1:K10"), Type:=xlGrowthTrend

End Sub

 

●実行結果
実行後、セルの列ごとに指定したAutoFillの処理が1~10行目まで表示されます。

 

●実行前 ※下表の一列目に各値等を設定します。(クリックで拡大表示)

 

●実行後 ※各列ごとに指定したAutoFillが実行されました。(クリックで拡大表示)

 

AutoFillを使った年間売上表の作成

 

●プログラム説明(サンプルプログラム②)
次のサンプルプルグラムは、AutoFillを使った年間売上表の作成方法を説明いたします。
下記、プログラムの説明ですが、月曜日~日曜日までのAutoFillを使った複写を利用します。4月~3月も同じくAutoFillを使います。縦合計横合計もAutoFillを使って合計(SUM関数)を複写します。作成した表が分かり易くするために、サンプルデータと罫線を使って作成した表の範囲に罫線を引きます。

 

Sub AutoFill_table()

    Dim I As Long
    Dim Hani As Range

    Range("A3") = "月曜日"
    Range("B2") = "4月"
    Range("A10,N2") = "合計"
    Range("B10") = "=SUM(B3:B9)"
    Range("N3") = "=SUM(B3:M3)"

    
    Range("A3").AutoFill Destination:=Range("A3:A9"), Type:=xlFillSeries '曜日を連続データ表示
    Range("B2").AutoFill Destination:=Range("B2:M2"), Type:=xlFillMonths '月単位の連続データ
    Range("B10").AutoFill Destination:=Range("B10:N10"), Type:=xlFillDefault '横合計複写(SUM)
    Range("N3").AutoFill Destination:=Range("N3:N9"), Type:=xlFillDefault '縦合計複写(SUM)

    
    'サンプルデータ作成
    For Each Hani In Range("B3:M9") 'サンプルデータの範囲
         I = I + 1
         Hani = I
    Next Hani
    
    '罫線作成    
    Range("A2:N10").Borders.LineStyle = xlContinuous  '囲線
        
End Sub

 

●実行結果
簡単に売上表が作成されました。関数などもAutoFillを使って複写できますので、この機能を使うと便利です。

 

●実行前 ※売上表を作成する前に下表の通りに文字列をセットします。(クリックして拡大)

 

実行前 ※AutoFillの機能を使い売上表が作成されました。(クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
以上で、「AutoFill(連続データの作成・セルの複写)」の使い方でした。便利な機能ですのでサンプルプログラム等を参照して、作成する方法を覚えて下さい。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
AKIRA