2015-09-28 4 views
1

У меня есть код, который заполняет ячейку смещения службой, если критерии совпадают. Однако на этом этапе он работает на основе того, что, если строка будет отображаться внутри ячейки, она будет применять значение, а не слово, являющееся полным словом. Например, у меня есть «посещение» по моим критериям, а «Vistor» (внутри ячейки) будет соответствовать моему коду, когда это не должно. Пожалуйста, кто-нибудь может помочь?Матч Завершить слово в строке

Option Compare Text 
Sub CHECK_CELL_VALUES() 
    Dim LASTROW As Long 
    Application.ScreenUpdating = False 
     With Sheet1 
     LASTROW = .Range("A1048576").End(xlUp).Row 


      For i = 2 To LASTROW 
       If Cells(i, 7).Value Like "*Service*" _ 
       Or Cells(i, 7).Value Like "*Servicing*" _ 
       Or Cells(i, 7).Value Like "* Labour*" _ 
       Or Cells(i, 7).Value Like "* Job*" _ 
       Or Cells(i, 7).Value Like "* Hire*" _ 
       Or Cells(i, 7).Value Like "* Visit*" _ 
       Or Cells(i, 7).Value Like "* Scaffold*" _ 
       Or Cells(i, 7).Value Like "* Contract*" _ 
       Or Cells(i, 7).Value Like "* Hour*" _ 
       Or Cells(i, 7).Value Like "* Month*" _ 
       Or Cells(i, 7).Value Like "* Quarter*" _ 
       Or Cells(i, 7).Value Like "* Day*" _ 
       Or Cells(i, 7).Value Like "* Maintenance*" _ 
       Or Cells(i, 7).Value Like "* Repair*" _ 
       Or Cells(i, 7).Value Like "* Survey*" _ 
       Or Cells(i, 7).Value Like "* Training*" _ 
       Or Cells(i, 7).Value Like "* Calibration*" _ 
       Then Cells(i, 7).Offset(0, 46).Value = "Service" 
       Debug.Print Cells(i, 7).Address 
      Next i 

     End With 
    Application.ScreenUpdating = True 
End Sub 
+1

Почему бы не добавить пробел после посещения ? Итак, «* Посещение *» – Trum

+0

Я также подтверждаю предложение @Trum, что если вы хотите соответствовать такой ситуации, держите свое слово критерия в окружении пространства «Посещение» – skkakkar

+0

Привет, спасибо и извините за глупость – Krishn

ответ

-1

Попробуйте это изменить:

If Cells(i, 7).Value Like "*Service*" 

к этому:

If InStr(Cells(i,7).Value,"Service") > 0 

И так далее, и так далее - это будет соответствовать всей строке "Service" Подробнее о InStr можно найти here

+0

Ваш код по-прежнему будет находить фрагмент в рамках большего слова. например 'Instr (« Посетитель »,« Посещение »)' вернет значение> 0. –

0

Способ, которым я это делаю: a) добавить пробел до и после строки, подлежащей поиску. b) найдите строку с пробелом, добавленным до и после. вот пример, который ищет слово ВИЗИТОМ и это будет соответствовать «ВИЗИТ» «ВИЗИТАХ» «ВИЗИТ НЕЧТО» но исключит «Visitor»

InStr(1, " " & UCase(Sheets("Sheet1").Cells(i, 1)) & " ", " VISIT ")