
У меня есть электронная таблица, упорядоченная по идентификатору и вычисляемой ячейке. Я сортирую лист по идентификатору и вычисляемой ячейке, таким образом получая пары связанных строк. Я просто хочу удалить вторую строку каждой пары на всем листе. Обычно там около 3000 строк.
Есть ли простой способ удалить или переместить вторую строку на другой лист?
решение1
Это не ответ по программированию, поскольку вы сказали, что не знакомы с VBA в Excel, но если это единичный случай, то просто сделайте это в 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
Перед запуском обязательно сделайте резервную копию.любоймакрос на вашем листе. Макросы не используют Отменить!