2016-06-06 2 views
0

У меня возникли проблемы с этим битом кода, чтобы удалить строки, которые не представляют собой фактический минимум. Это просто не работает, я вручную проверил логику. То, что я пытаюсь проверить, - это то, что значение ячейки в строке 1, столбец 2 больше строки 2, столбец 2. И если это так, то полностью удалите строку 1. Я нашел примеры, где они петли аналогично этому, но ищите определенное строковое значение, а не сравнивайте значение ячеек с логическим выражением. Я сделал проверку, чтобы убедиться, что она ссылается на правильный рабочий лист и что я понимаю, как работает функция удаления. Я также проверил код с LRow + 1 вместо LRow - 1. Что я делаю не так?Удаление строк, основанных на смежном значении ячейки - VBA

Sub rowdelete() 
Dim LRow As Long 
With Worksheets("WWOutput") 
     For LRow = Cells(Rows.Count, 2).End(xlUp) To Cells(7, 2) Step -1 
      If Cells(LRow, 2) > Cells(LRow - 1, 2) And Cells(LRow, 2) < 10000 Then 
     Rows(LRow).EntireRow.Delete 
    End If 
Next LRow 
End With 
End Sub 

Вот несколько примеров данных.

11804.6875 
6415.625095 
6333.593845 
3786.718845 
11841.40682 

В этом случае все, что я хочу быть оставлены для данных

11804.6875 
3786.718845 
11841.40682 

Спасибо заранее!

+0

'убедитесь, что он ссылается на правильный worksheet', но это не тогда, когда вы забыли' .' перед 'cells' при использовании' with'. – findwindow

+1

change 'Для LRow = Cells (Rows.Count, 2) .End (xlUp) К ячейкам (7, 2) Шаг -1' для' Для LRow = Ячейки (Rows.Count, 2) .End (xlUp) .Row To 7 Step -1' –

+0

ahh, что-то настолько малое, что делает такую ​​большую разницу. Спасибо @findwindow и Скотт! Поскольку я пытаюсь узнать больше о кодировании VBA, какая разница делает '.'? –

ответ

0

Как они сказали ...

Sub rowdelete() 
    Dim LRow As Long 
    With Worksheets("Sheet1") 
     For LRow = .Cells(Rows.Count, 2).End(xlUp).Row To Cells(7, 2).Row Step -1 
      If .Cells(LRow, 2) > .Cells(LRow - 1, 2) And (.Cells(LRow, 2) < 10000) Then 
       .Rows(LRow).EntireRow.Delete 
      End If 
     Next LRow 
    End With 
End Sub 
+0

'К ячейкам (7, 2). Вы пропустили комментарий Скотта. – findwindow

+0

Ах да ... вы можете просто пропустить это и заменить фактическим номером строки – dbmitch

Смежные вопросы