2012-07-03 6 views
4

Я надеялся, что кто-то сможет помочь с этим кодом. Я пробовал стирать всю строку, если в колонке А я нашел текст «FemImplant». Сложная часть состоит в том, что этот текст является частью предложения, связанного «$». Поэтому мне нужен код для анализа содержимого ячейки до «$» и посмотреть, соответствует ли он «FemImplant» и удаляет эту строку. Это то, что у меня есть, но это не работает.удалить строку на основе условия

Dim cell As Excel.Range 
RowCount = DataSheet.UsedRange.Rows.Count 
Set col = DataSheet.Range("A1:A" & RowCount) 
Dim SheetName As String 
Dim ParsedCell() As String 

For Each cell In col 

ParsedCell = cell.Value.Split("$") 
SheetName = ParsedCell(0) 

If SheetName = "FemImplant" Then 
cell.EntireRow.Delete Shift:=xlUp 

End If 

Следующая

+0

Основная проблема, которую я имею что, я не в состоянии сделать это цикл из нижней части. Способ, которым я его настроил, - это цикл сверху, и он не удаляет последовательные строки. – user1452091

ответ

12

Вы можете использовать автофильтр для удаления строк, которые содержат текст FemImplant$. Этот метод будет намного быстрее, чем цикл.

Смотрите этот пример

Я предполагаю, что ячейка A1 имеет заголовок.

Sub Sample() 
    Dim ws As Worksheet 
    Dim strSearch As String 
    Dim lRow As Long 

    strSearch = "FemImplant$" 

    Set ws = Sheets("Sheet1") 

    With ws 
     lRow = .Range("A" & .Rows.Count).End(xlUp).Row 

     '~~> Remove any filters 
     .AutoFilterMode = False 

     '~~> Filter, offset(to exclude headers) and delete visible rows 
     With .Range("A1:A" & lRow) 
      .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" 
      .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
     End With 

     '~~> Remove any filters 
     .AutoFilterMode = False 
    End With 
End Sub 

СНАПШОТ

enter image description here

+0

+1 Да Автофильтр намного лучше, чем цикл –

+0

, который работает, спасибо! – user1452091

+0

Purrrfect. Благодаря! –

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