1

У меня есть таблица, которая упорядочена по идентификатору и вычисленной ячейке. Я сортирую лист по идентификатору и вычисленной ячейке, таким образом, получая пары связанных строк. Я просто хочу удалить второй ряд каждой пары на всем листе. Обычно около 3000 строк.

Есть ли простой способ удалить или переместить второй ряд на другой лист?

2 ответа2

5

Не программный ответ, так как вы сказали, что не знакомы с VBA в Excel, но если это разовое, просто сделайте это в Excel:

  1. Добавить новый столбец (скажем, A)
  2. Установите для первого ряда (A1) значение True
  3. Установите строку A2 =NOT(A1)
  4. Затем перетащите строку A2 вниз на все свои ряды.

Затем примените автоматический фильтр, где столбец A равен false , выделите все возвращенные строки и удалите их, а затем удалите фильтр.

0

Если это одноразовая задача, воспользуйтесь ответом Сефа. Если это нужно повторить, используйте 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

Перед запуском любого макроса на листе убедитесь, что вы сделали резервную копию. Макросы не используют Undo!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .