VBA를 처음 사용하기 때문에이 코드를 작성하는 데 더 간단하고 효율적인 방법이 있어야하지만 올바른 기능에 익숙하지 않아야합니다 (예 : 기존 데이터 위에 붙여 넣지 않고 다음 워크 시트에 붙여 넣기). 작은 워크 시트에서도 작동하지만 60000+ 라인이있는 워크 시트에 사용해야합니다. 어떤 도움이라도 대단히 감사하겠습니다. 미리 감사드립니다.특정 데이터를 복사하여 다른 시트에 붙여 넣기하는 VBA 코드
Sub test()
Dim row As Long
With Excel.Application
.ScreenUpdating = False
.Calculation = Excel.xlCalculationManual
.EnableEvents = False
End With
For row = 1 To 65500
If ThisWorkbook.ActiveSheet.Cells(row, 14) <> "" Then
ThisWorkbook.ActiveSheet.Cells(row, 1).EntireRow.Copy
ThisWorkbook.ActiveSheet.Paste Destination:=ThisWorkbook.Sheets("SCO").Cells(row, 1)
ThisWorkbook.ActiveSheet.Cells(row + 1, 1).EntireRow.Copy
ThisWorkbook.ActiveSheet.Paste Destination:=ThisWorkbook.Sheets("SCO").Cells(row + 1, 1)
End If
Next
For row = 1 To 65500
If ThisWorkbook.Sheets("SCO").Cells(row, 14) = "" Then
ThisWorkbook.Sheets("SCO").Cells(row, 20).Value = 2
End If
Next
For x = 65500 To 1 Step -1
If ThisWorkbook.Sheets("SCO").Cells(x, 3) = "" Then
ThisWorkbook.Sheets("SCO").Cells(x, 1).EntireRow.Delete
End If
Next
For row = 1 To 65500
If ThisWorkbook.Sheets("SCO").Cells(row, 20) = 2 Then
ThisWorkbook.Sheets("SCO").Cells(row + 1, 1).EntireRow.Insert shift:=xlDown
End If
Next
With Excel.Application
.ScreenUpdating = True
.Calculation = Excel.xlAutomatic
.EnableEvents = True
End With
End Sub
에 필요한 시간의 양을 줄이고 기능을 카운트하기 위해이 작업을 수행 할 수 있습니다. 나는 그들이 구문을 잘 모르지만 무엇을하는지 짐작할 수있다. 그래서 for 루프를 Activesheet.UsedRange.Rows.Count로 대체해야합니까? 내 코드 내에서 이러한 명령을 어디에 배치해야하는지 정확하게 알려줄 수 있습니까? –