У меня есть макрос, но он удаляет строки, которые я хочу сохранить, исходя из числа (числа строк), которое он должен сохранить, он может перейти к другой лист, но все, что я пытаюсь сделать, просто перемещает последнее совпадение или удаляет каждую строку, которую я хочу сохранить. What happensMacro удаляет то, что я хочу сохранить
Sub KeepRows()
Dim x As Range, u As Range
Dim y As String
With Sheets("Sheetwithnumberrow")
Set x = .Range(.Cells(2, "H"), .Cells(Rows.Count, "H").End(xlUp))
End With
For Each u In x
If u.Text = "keep row" Then
Sheets("SheetthatIwannaClean").Select
y = u.Offset(0, -1)
Rows(y).ClearContents
End If
Next
End Sub
EDIT: Я положил образ того, что происходит, я пытался перейти на другой лист вместо очистки содержимого, шины двигаться только последнюю строку.
Product ROW Instruction ROW Instruction
1 6 keep row 6 keep row
2 15 keep row 15 keep row
3 18 Try Next 17 keep row
4 24 keep row 24 keep row
5 28 keep row 28 keep row
Логика Это похоже Thig, она идет в строке, если команда должна держать, должен держать, и перейти к следующей строке. Но проблема в том, что код удаляет строку.
Одобрено опечаткой. Попробуйте 'для каждого u в x' вместо' для каждого cIn x'. Если вы включили опцию «Option Explicit» перед юнитом, вы, скорее всего, поймаете такие ошибки самостоятельно. Также измените «Листы» («SheetthatIwannaClean»). Выберите 'to' Sheets («SheetthatIwannaClean»). Активируйте' (хотя вы можете полностью удалить эту строку). – Ralph
О, Извините, я сделал ошибку, написав здесь. В коде это U. – Yoshio
Если вы хотите сохранить строку, измените условие: 'If u.Text <>" сохранить строку "Then'? – trincot