2015-07-13 6 views
2

У меня есть 3 столбца, в которых я ищу текст. Если текст появляется в любом столбце, я хочу добавить строку и выполнить некоторую дополнительную конфигурацию.Выполнение if-then- next в Excel VBA

Однако, если он появляется несколько раз подряд, я хочу, чтобы он остановился и переместился в следующую строку.

Логика Быть: проверять строку один столбец за раз, если появляется ABC, вставить счетчик строк = 1, если счетчик = 1 перейти к следующей строке.

For x = 1 To 1000 
    Count = 0 
    For y = 1 To 19 
    If Count = 1 Then Next x 
    End If 
    If Left(cell(x, y), 8) = "ABC" Then 
     Rows(x+1).Insert 
     Count = 1 
    End If 
    Next y 
Next x 
+1

В чем проблема с текущим кодом? – moffeltje

ответ

1
Dim ws As Excel.Worksheet 
Set ws = Application.ActiveSheet 
Dim x As Integer 
Dim y As Integer 
Dim Count As Integer 

'Loop the rows 
For x = 1 To 1000 
    Count = 0 
    'Check the columns 
    For y = 1 To 19 
     If Left(ws.Cells(x, y), 3) = "ABC" Then 
      'Increment the counter if we found it 
      Count = Count + 1 
      'This will prevent looping all the columns once we have more than one occurrence. This will help performance. 
      If Count > 1 Then 
       Exit For 
      End If 
     End If 
    Next y 
    'After checking all the columns, add a row if we found the text only one time 
    If Count = 1 Then 
     ws.Rows(x+1).Insert 
     'Do other stuff here 
    End If 
Next x 
+0

@Bill Flippen Я добавил выход для улучшения производительности. – MatthewD

+0

@Bill Flippen Я также изменил ваши левые (, 8) налево (, 3), так как ваш пример ищет «ABC» – MatthewD

+0

извините за левое (, 8) Я действительно ищу что-то другое, кроме ABC. спасибо за ответ, проверите его. –

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