Поиск неполного текста в полной строке - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь найти во всей строке строку, содержащую «ПРОФИЛЬ».Он всегда будет написан заглавными буквами, но формат будет, например, «[9] PROFILE001».

Некоторая дополнительная информация: я использовал команду Find, чтобы найти строку, в которой я ищу строку.У него есть своя собственная переменная, которую я пытаюсь включить в диапазон, который я использую.

Я искал несколько статей с частичными строками здесь и не смог внедрить ее в мой код.Я пытался использовать команду Like и команду IntStr безрезультатно.Я полагаю, что моя проблема может быть связана с тем, как я ссылаюсь на диапазон поиска или как я ищу.

Вот фрагмент моего текущего кода:

'finding item name row
Set FindRow3 = Range("A1:A100").Find("Item Name", LookIn:=xlValues)
itemnamerow = FindRow3.Row
'The section above is working as intended

'searching for the word profile, the section below is the one I am having issues with
Range("B8:Z100").Style = "Normal"
If ActiveSheet.Range("B" & itemnamerow & ":Z" & itemnamerow) Like "*PROFILE" Then
    Range("C1").Value = "it worked"
End If

В настоящее время у меня наблюдается время выполненияошибка 13, несоответствие типов в строке «Если ActiveSheet ...».Мне не удалось получить правильный индекс, чтобы исправить это.

Я пытаюсь использовать это, если найдена частичная строка, я хочу что-то сделать.

TIA

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы не предоставили достаточно параметров для операции Range.Find.Переключитесь на соответствие листа, чтобы найти Имя элемента , а затем снова подстановочный поиск, чтобы найти profile .

dim m as variant, n as variant

m = application.match("Item Name", range("A1:A100"), 0)

If not iserror(m) then

    n = application.match("*profile*", cells(m, "B").resize(1, 25), 0)

    If not iserror(n) then

        Range("C1").Value = "it worked " & cells(m, n+1).value

    end if

end if
0 голосов
/ 27 февраля 2019

Вам необходимо использовать метод Find с установленными аргументами MatchCase и LookIn.И, вероятно, LookAt для проверки фактических значений, а не синтаксиса формул.

Dim profileFound as Range
Set profileFound = ActiveSheet.Range("B" & itemnamerow & ":Z" & itemnamerow).Find("PROFILE",lookIn:=xlValues,MatchCase:=True,lookAt:=xlPart)

If Not profileFound is nothing Then
    debug.print profileFound.Value
    Range("C1").Value = "it worked"
else
    debug.print "no profile found"
End If

Причина, по которой исходный код дает сбой, заключается в том, что Excel не позволяет оценивать диапазон из нескольких ячеек в сравнении с однимзначение.Вы можете проходить по каждой ячейке в диапазоне и проверять каждую ячейку отдельно, но, поскольку Find доступно, это лишнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...