2016-05-20 4 views
0

В столбце B у меня есть данные, например. hmc1, hmc2, hmc3. Я хочу найти каждую ячейку столбца В, содержащую «hmc», и заменить ее соответствующую ячейку в столбце A на «Найдено». Мой код пока работает, если он полностью соответствует, но не соответствует его подстроке.Excel VBA: как найти определенную подстроку

 If .Range("B" & r).Value = "hmc " Then 
      .Range("A" & r).Value = "Found" 

Col A Col B 
Accept hmc1 
123  hmc1 
123  hmc2 
Accept xcc 
Accept xcc 
Accept xcc 
Accept xcc 
Accept xcc 
Accept xcc 
Accept xcc 
Accept xcc 
Accept xcc 
Accept xcc 
123  hmc3 
Accept hmc3 
Accept hmc3 
+1

[InStr] (https://msdn.microsoft.com/fr -fr/library/office/gg264811.aspx)? –

ответ

2

Если предположить, что данные столбца B начинается с 2

Sub test() 
    Dim lastrow As Long 
    lastrow = Range("B" & Rows.Count).End(xlUp).Row 
    For i = 2 To lastrow 
     If InStr(LCase(Range("B" & i).Value), "hmc") Then 
      Range("A" & i).Value = "Found" 
     End If 
    Next i 
End Sub 

enter image description here

+0

вот оно! Имеет ли LCase нижний регистр? Как насчет того, если Col B, может содержать пример Hmc, HMC, hmc или 110 Hmc, который мне не нравится, пока он содержит ключевое слово hmc. это будет работать? tq – maximus

+1

он будет работать для HMC1 или Hmc1 или hMc1 и т. д., он преобразуется в lcase и проверяет с нижним регистром hmc –

+0

Я попробовал, он отлично работает. Большое спасибо, ты действительно эксперт! – maximus

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