如何在 Excel 2007 中刪除每隔一行

如何在 Excel 2007 中刪除每隔一行

我有一個按 id 和計算單元格排序的電子表格。我按 id 和計算的儲存格對工作表進行排序,從而得到成對的相關行。我只想刪除整張紙上每對的第二行。通常大約有 3000 行。

有沒有簡單的方法可以刪除第二行或將第二行移到另一張紙?

答案1

這不是程式答案,因為您說您不熟悉 Excel 中的 VBA,但如果它是一次性的,那麼只需在 Excel 中執行即可:

  1. 新增一個新列(假設為 A)
  2. 將第一行 (A1) 設定為True
  3. 將 A2 行設定為=NOT(A1)
  4. 然後將 A2 行向下拖曳到所有行。

然後應用自動過濾器,其中 columnAfalse,選擇所有返回的行並刪除它們,然後刪除過濾器。

答案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

運行前確保備份任何巨集在您的工作表上。巨集不使用撤銷!

相關內容