各行に割り当てられた識別子を持つ大きなデータセットがあります。データセット全体に約10の異なる識別子がありますが、これは可変である可能性があります。目的は、メインのデータセットを識別子のグループごとに個別のワークシートに分割することです。私はこのコードを以下に書きましたが、これは仕事をしますが、すべてのワークシートを作成するループと各行を通過する別のループで非常に不格好に見えます。
...
'--> Get list of Area Codes
ws1.Range("N:N").Copy
Set TempWS = Sheets.Add
With TempWS
With .Range("A:A")
.PasteSpecial
.AdvancedFilter xlFilterInPlace, Unique:=True
.SpecialCells(xlCellTypeVisible).Copy
End With
.Range("B:B").PasteSpecial
.ShowAllData
.Range("A:A").Delete
.Rows(1).Delete
tmpLR = .Range("A" & Rows.Count).End(xlUp).Row + 1
End With
'--> Create Worksheet for Each Code
i = 1
Do Until i = tmpLR
Set ws = Sheets.Add
ws.Name = TempWS.Cells(i, 1).Text
ws1.Range("A1").EntireRow.Copy
ws.Rows("1:1").PasteSpecial
i = i + 1
Loop
TempWS.Delete
'--> Break Up Main Data Sheet into Area Code Sheets
Set rng = ws1.Range("N2:N" & LRws1)
For Each c In rng
shname = c.Text
c.EntireRow.Copy
Set oWS = Sheets(shname)
oLR = oWS.Range("A" & Rows.Count).End(xlUp).Row + 1
oWS.Rows(oLR).PasteSpecial
Next
...
複数回ループする代わりに、このプロセスを完了するためのより効率的な方法はありますか?
また、この行では、の代わりにc.entirerow.copy
を使用できないことに気付きました。これの理由は何ですか?cut
copy
フォーマットは次のようになります。