2014-08-28 2 views
0

Я написал нижеприведенные макросы ниже, и он отлично работает, когда есть данные (пример) 12345 на листе SMT02.Excel vba найти значение в листах и ​​удалить строки

Итак, если присутствует 12345, он оставляет эти строки и удаляет остальные строки другими данными.

Но я хочу, чтобы он работал таким образом, даже если 12345 нет, тогда я все еще хочу, чтобы все остальное (строки) было удалено. На данный момент он отлаживается и останавливается. Может ли кто-нибудь помочь?

Dim c As Range 
Dim SrchRng 

Sheets("SMT02").Select 
Range("B1").Select 
Set SrchRng = ActiveSheet.Range("B1", ActiveSheet.Range("B65536").End(xlUp)) 
Do 
    Set c = SrchRng.Find("12345", LookIn:=xlValues) 
    If Not c Is Nothing Then c.EntireRow.Delete 
Loop While Not c Is Nothing 
+0

Не могли бы вы сказать, что вы хотите делать? Мы не можем понять, что вы хотите от своего кода, если мы исправляем ошибки в вашем коде. – rakslice

+0

Я хочу удалить все строки, которые не содержат «12345», и сохранить только строки с «12345» Но - если данные электронной таблицы, которые пришли к нам, не имеют «12345», он все равно должен удалить все остальные строки, которые не имеют «12345». В принципе, лист должен быть пустым после удаления (если «12345» не присутствует). Надеюсь, я правильно объяснил. Спасибо. – kpatel

+0

Используйте [AUTOFILTER] (http://stackoverflow.com/questions/11631363/how-to-copy-a-line-in-excel-using-a-specific-word-and-pasting-to-another-excel- s)? –

ответ

0

Если вы пытаетесь удалить каждую строку в листе, когда значение «12345» не присутствует в клетках определенного столбца (столбец B в вашем примере) на конкретном листе (SMT02 в вашем примере) Я думаю, вы обнаружите, что это работает:

Sub DeleteRowIfNot12345() 

    Dim Rng As Range 
    Dim x As Long 

    Sheets("SMT02").Select 

    Set Rng = Range("B1:B" & Range("B65536").End(xlUp).Row) 
    For x = Rng.Rows.Count To 1 Step -1 
     If InStr(1, Rng.Cells(x, 1).Value, "12345") = 0 Then 
      Rng.Cells(x, 1).EntireRow.Delete 
     End If 
    Next x 

End Sub 
+0

Спасибо. Но если я использую это выше, он не удаляет ничего/никакой строки. Он просто сидит там, ничего не делая. – kpatel

+0

Я снова посмотрел на него и протестировал его, но не смог его провалить, если имя листа не отличается. Вот как я его настроил: https://flic.kr/p/oXkM5M – sallyapplepie