
ID와 계산된 셀로 정렬된 스프레드시트가 있습니다. ID와 계산된 셀을 기준으로 시트를 정렬하여 관련 행 쌍을 제공합니다. 전체 시트에서 각 쌍의 두 번째 행을 삭제하고 싶습니다. 일반적으로 약 3000개의 행이 있습니다.
두 번째 행을 삭제하거나 다른 시트로 이동하는 쉬운 방법이 있습니까?
답변1
Excel의 VBA에 익숙하지 않다고 말했기 때문에 프로그래밍 답변은 아니지만 일회성이라면 Excel에서 수행하십시오.
- 새 열 추가(A라고 가정)
- 첫 번째 행(A1)을 다음으로 설정합니다.
True
- A2행을 다음으로 설정합니다.
=NOT(A1)
- 그런 다음 A2 행을 모든 행으로 끌어다 놓습니다.
A
그런 다음 열이 인 자동 필터를 적용하고 false
반환된 모든 행을 선택하여 삭제한 다음 필터를 제거합니다.
답변2
이것이 일회성 작업인 경우 Seph의 답변을 사용하십시오. 반복해야 하는 경우 다음과 같이 VBA를 사용합니다.
Sub DemoDeleteAlternateRows()
Dim iRow As Long, LastRow As Long
Dim sh As Worksheet
Set sh = ActiveSheet ' <-- Maybe change this to refer to a specific sheet
Application.FindFormat.Clear ' Just in case Find was last used with a Format
LastRow = sh.Cells.Find(What:="*", After:=sh.Cells(1, 1), _
SearchDirection:=xlPrevious, SearchOrder:=xlByRows, SearchFormat:=False).Row
For iRow = LastRow To 1 Step -1
' Delete even numberede rows (to delete odd numbered
' rows, instead use If iRow Mod 2 = 1 Then).
If iRow Mod 2 = 0 Then
sh.Rows(iRow).Delete
End If
Next
End Sub
달리기 전에 반드시 백업하세요어느시트의 매크로입니다. 매크로는 실행 취소를 사용하지 않습니다!