Копировать и вставить цикл на основе значения ячейки
Макрос создан ниже благодаря помощи другого, который работает.
По сути, он принимает значение ячейки в столбце А и, если лист нене существует с этим именем клетки, создает его. Затем он вставляет все строки данных, которые имеют соответствующее значение ячейки на этот лист. То есть. если ячейка содержит следующее:
column a column b
dc00025 data value
Если dc00025 не 'не существует, этоЯ сделаю лист. И вставьте все строки с помощью dc00025 в A.
Это работает отлично. Однако я заметил, что когда вы запускаете этот макрос после того, как лист уже создан, по какой-то причине он добавляет тысячи столбцов, значительно замедляя Excel.
Чтобы это исправить, можно ли будет изменить скрипт так, чтобы он копировал только столбцы b, а не всю строку? Вставить их, начиная с А3, было бы предпочтительнее, но яЯ не уверен, как это исправить.
Заранее спасибо.
Sub CopyCodes()
Application.ScreenUpdating = False
Dim rCell As Range
Dim lastrow As Long
lastrow = Sheets("Data").UsedRange.Rows.Count
For Each rCell In Worksheets("Data").Range("A2:A" & lastrow).SpecialCells(xlCellTypeConstants)
If Not SheetExists(rCell.Value) Then
With Worksheets.Add(, Worksheets(Worksheets.Count))
.Name = rCell.Value
End With
End If
Worksheets("Data").Rows(1).EntireRow.Copy Worksheets(rCell.Value).Rows(1)
Worksheets(rCell.Value).Range("A" & Rows.Count).End(xlUp)(2).EntireRow.Value = _
rCell.EntireRow.Value
Next rCell
Application.ScreenUpdating = True
End Sub
Function SheetExists(wsName As String)
On Error Resume Next
SheetExists = Worksheets(wsName).Name = wsName
End Function