2015-02-11 5 views
0

Я пытаюсь создать скрипт VBA, который будет проходить через столбец «A» в моей таблице и удалить любую строку, которая начинается с ячейки, содержащей слова «Div Code:» проблема в том, что ячейки содержат намного больше текста после «Div Code», и я не могу понять, как заставить функцию .replace работать с частичными. Вот что я до сих пор:Удалить строку на основе частичного содержимого ячейки

Sub FindDivCode() 


    With Intersect(Columns("A"), ActiveSheet.UsedRange) 
    .Replace "Div Code", "#N/A", xlPart 
    .Replace "Date", "#N/A", xlPart 
    .SpecialCells(xlConstants, xlErrors).EntireRow.Delete 
    End With 
End Sub 

Этот скрипт работает для «Дата» клетки, но не «Див Code» клетки. Любая помощь будет принята с благодарностью!

Paul

ответ

0

Вы можете перебрать ячеек столбца А и, после проверки, если ячейка Ax начинается с «Div Code», удалить всю строку:

For j = Range("A1").End(xlDown).Row To 1 Step -1 
    If InStr(Range("A" & j).Value,"Div Code") = 1 Then 
     Rows(j).Delete 
    End If 
Next j 
+1

Если вы циклически и удаление строк вы хотите сделать шаг назад через петлю с 'Для у = Range («A1»). End (xlDown) .Row К 1 Шаг -1 'и вырезать строку' j = j - 1'. –

+0

@ D_Zab спасибо, это на самом деле имеет больше смысла. Я отредактировал свой ответ. –

+1

Вы можете упростить свою условную инструкцию, используя вместо этого «InStr» вместо – Jeanno

0

Это расширение до решения, данное Matteo. Кредит должен пойти к нему

Sub FindDivCode2() 
     For j = Range("A1").End(xlDown).Row To 1 Step -1 
      If InStr(Range("A" & j).Value,"Div Code") = 1 Or InStr(Range("A" & j).Value,"Date") = 1Then 
       Rows(j).Delete 
      End If 
     Next j 
    End Sub 
+0

Еще раз спасибо Jeanno, Это выглядит поближе к работе, но я все еще получаю «Ошибка выполнения» 13: Тип Несоответствие »в строке три. Любая идея, что вызывает это? –

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