Excel

同じシートにあるデータを別ブックに分割する

2021-03-14

1つのシートに入力しているデータを別ブックに分割する方法です。

あくまでも例です。

別ブックに分割する例

  • 分割の基準:A列・分類
  • データは分類順で並んでいない
別ブックに分割

分割後のエクセルブックです。

分割後

分割対象の分類は、別シート「対象」に入力しています。AとBのみ分割したい場合は、AとBのみ入力します。

分割対象

上記の例は少ないデータ量ですが、実際にあった例ではデータ量が2万行を超えていました。一気に全データを対象にマクロを実行してはいません。

エクセルの最終行は1,048,576ですが、最終行まで使っているデータを見たことはないし、内容によっては2万行くらいでもメモリ不足になることもあります。

サンプルVBA(マクロ)

変数等は最小限にしています。

Sub sample()
    Dim wsT As Worksheet    '分割対象一覧のシート
    Dim Lrow As Long        '分割対象一覧のシートの最終行
    Dim i As Long
    Dim wsName As String
    Dim wbName As String
    
    Application.ScreenUpdating = False
  
    Set wsT = ActiveWorkbook.Sheets("対象")
    Lrow = wsT.Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To Lrow
        wbName = wsT.Cells(i, 1)
        Range("A1").AutoFilter 1, wbName

            wbName = "F:\sample" & "\" & wbName
            
            Range("A1").CurrentRegion.Copy
            
            Workbooks.Add
            ActiveSheet.Paste
            With ActiveWorkbook
                .SaveAs Filename:=wbName
                .Close
            End With
    Next i
    
    ActiveSheet.AutoFilterMode = False
    
    Application.ScreenUpdating = False
    MsgBox "分割しました。"
End Sub

シート「一覧」をアクティブにした状態で、マクロを実行します。

シート「一覧」

-Excel
-

© 2021 オフィスのQ&A