【エクセルマクロ】都道府県ごとに別シート転記:自動化

VBA-都道府県ごとに別シート転記-アイキャッチ ExcelVBA

エクセルマクロで、都道府県(住所)ごとに別シート転記するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください😉

都道府県ごとに別シート転記(パターン1)

以下のExcelVBAを実行すると、都道府県毎に別々のシートに自動転記します。


Sub 都道府県ごとに別シート転記()

Dim Data_Sht As Worksheet
Dim DicName As Variant
Dim GetName As String
Dim myKey As Variant
Dim LastRow As Long
Dim i As Long
Dim j As Long

    '連想配列
    Set DicName = CreateObject("Scripting.Dictionary")

    'A列の最終行
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Set Data_Sht = Sheets("データ")

    '重複しないリストを連想配列へ
    For i = 2 To LastRow
        GetName = Cells(i, 1)

        If Not DicName.Exists(GetName) Then
            DicName.Add GetName, GetName
        End If
    Next i
    
    Application.ScreenUpdating = False

    '連想配列をループ
    myKey = DicName.keys
    For i = 0 To UBound(DicName.items)

        '新規シート作成し、シート名を入力
        Sheets.Add After:=ActiveSheet
        ActiveSheet.Name = myKey(i)

        '「データ」シート セルA2から最終行までループ
        For j = 2 To LastRow
        
            'フィルターでデータ抽出
            Data_Sht.Range("A1").CurrentRegion.AutoFilter _
                Field:=1, _
                Criteria1:=myKey(i)
        
            'フィルター抽出結果を別シートへ転記して、Forを抜ける
            Data_Sht.Range("A1").CurrentRegion.Copy Sheets(myKey(i)).Range("A1")
            Exit For

        Next j
    Next i

    Application.ScreenUpdating = True
    Set DicName = Nothing

End Sub

マクロ実行前

「データ」シートに、住所録があります。
A列に都道府県名を入力しておきます。


 

マクロ実行後

各都道府県ごとに新規シートを自動作成して、データを転記します。


 
 

都道府県ごとに別シート転記(パターン2)

以下のExcelVBAを実行すると、都道府県毎に別々のシートに自動転記します。


Sub 住所ごとに別シート抽出()

Dim Data As Worksheet
Dim i As Long
Dim RowCnt  As Long
Dim LastRow  As Long
Dim ShtName As String

    'シートを変数代入
    Set Data = Sheets("データ")
    
    Data.Select

    '「データ」 B列の最終行を取得
    LastRow = Data.Cells(Rows.Count, 2).End(xlUp).Row

    Application.ScreenUpdating = False

        '「データ」 2~最終行までループ
        For i = 2 To LastRow

            'A列が「OK」だったら
            If Data.Cells(i, 1) = "OK" Then
                
                'B列「住所」取得
                ShtName = Data.Cells(i, 2)
                
                '該当シートの最終行を取得
                RowCnt = Sheets(ShtName).Cells(Rows.Count, 1).End(xlUp).Row + 1
                
                '「データ」  B~H列の値を、該当シートに貼り付け
                Data.Range(Cells(i, 2), Cells(i, 8)).Copy Sheets(ShtName).Cells(RowCnt, 1)

            End If
        Next i

    Application.ScreenUpdating = True

End Sub

マクロ実行前

「データ」シートに、住所録があります。
A列にチェック用の列があります。
B列に都道府県名を入力しておきます。


 

「東京都」「福岡県」「沖縄県」「宮城県」のシートをあらかじめ作成しておきます。
すべて「データ」シートと同じフォーマットです。
1行目にタイトル行を入力しておきます。


 

マクロ実行後

「データ」シートのA列に「OK」と入力してある行について、
「データ」シートのB~H列のデータを、各都道府県のシートに転記します。


 
 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】別シート転記を自動処理する方法まとめ
 

【エクセルマクロ】別シート転記(抽出)を自動化する:超便利20選
...

 

「シンプルで一生使える現場直結のワザ大全 ExcelVBA 最高の教科書」
最強のワザ大全がついに登場!
全方位から「本気のVBA」を解説しています