| 
    
     |  | ▼mame さん: >▼じゅんじゅん さん:
 >>▼mame さん:
 >返信ありがとうございます。
 >うーん・・・
 >どういえばいいんでしょうか・・・・
 >
 >イメージとしては、社名、請求額、請求書番号などがダーッと
 >書かれたリストがあって、各社ごとに分けてシートを作りたいって感じです。
 >社名は決まってなく毎回違いますので、コード内に入れ込む事が
 >難しいと思いまして・・・・。
 >
 >説明がヘタクソですみません。。。。
 
 Sheet1にデータがあって、A列(1行目は項目、2行目以下に社名)のデータ
 毎にシート名(社名)を作成し、そのシートに社名毎のデータを転記する。
 (同一のシート名が存在していたら、強制削除する)
 
 Sub Test()
 Dim Dic As Object
 Dim key As Variant
 Dim sh1 As Worksheet
 Dim sh2 As Worksheet
 Dim Csh As Worksheet
 Dim r As Range
 
 Application.ScreenUpdating = False
 
 Set sh1 = Worksheets("Sheet1")
 Set Dic = CreateObject("Scripting.Dictionary")
 
 With sh1
 For Each r In .Range(.[A2], .Cells(Rows.Count, "A").End(xlUp))
 Dic(r.Value) = Empty
 Next
 End With
 
 For Each key In Dic.keys
 For Each Csh In Worksheets
 If key = Csh.Name Then
 Application.DisplayAlerts = False
 Csh.Delete
 Application.DisplayAlerts = True
 End If
 Next
 
 Worksheets.Add After:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = key
 Set sh2 = Worksheets(key)
 
 With sh1
 .Range("A1").AutoFilter Field:=1, Criteria1:=key
 .Range("A1").CurrentRegion.Copy Destination:=Worksheets(key).Range("A1")
 .AutoFilterMode = False
 End With
 
 Next
 
 Set Dic = Nothing
 Set sh1 = Nothing
 Set sh2 = Nothing
 Application.ScreenUpdating = True
 End Sub
 
 こう言った事でしょうか?
 
 |  |