Как реализовать функцию поиска InStr? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть инструмент, который циклически просматривает строки набора данных и отображает содержимое ячеек (информацию о задании), если остальная часть этой строки соответствует критериям, которые я изложил в столбце А. Вместо сопоставления .value в этом сценарии, как я мог бы реализовать что-то вроде InStr, чтобы оно не совпадало с регистром всей ячейки, но могло быть переменной внутри предложения или текстовой строки? в настоящее время я хотел бы, чтобы это включало функцию InStr, но я не могу понять это:

   For Each cSkills In rSkills

            If c.Value = cSkills.Value Then i = i + 1

        Next cSkills

остальная часть сценария:

Sub Find_1_Skill()


Dim c As Range, r As Range
Dim row As Integer, i As Integer
Dim rSkills As Range, cSkills As Range
Dim JobCodeMatch As Integer, JobTitleMatch As Integer, CLevelMatch As Integer
Dim JobCode As String, JobTitle As String, CareerLevel As String

row = 2
JobCodeMatch = 2
JobTitleMatch = 2
CLevelMatch = 2

Set rSkills = Application.Selection
Set rSkills = Application.InputBox("Select Job Competencies in Column A", TitleID, rSkills.Address, Type:=8)

Do While row < 2400

    i = 0

    JobCode = Cells(row, 6).Value
    JobTitle = Cells(row, 7).Value
    CareerLevel = Cells(row, 14).Value

    Set r = Range(Cells(row, 6), Cells(row, 336))

    For Each c In r

        For Each cSkills In rSkills

            If c.Value = cSkills.Value Then i = i + 1

        Next cSkills

    Next c

    If i = 1 Then

        Cells(JobCodeMatch, 3) = JobCode
        Cells(JobTitleMatch, 4) = JobTitle
        Cells(CLevelMatch, 5) = CareerLevel

        JobCodeMatch = JobCodeMatch + 1
        JobTitleMatch = JobTitleMatch + 1
        CLevelMatch = CLevelMatch + 1

    End If

    row = row + 1

Loop

End Sub

1010 *

worksheet

1 Ответ

1 голос
/ 28 марта 2019

Вы можете реализовать метод Find FindNext, используя xlPart совпадения

Public Sub demo()
    Dim rSkills As Range, cSkills As Range, searchRng As Range
    Dim firstSkill As String
    Dim JobCode As String, JobTitle As String, CareerLevel As String
    Dim c

    With SrcSheet
        Set searchRng = .Range(.Cells(2, 6), .Cells(.Cells(.Rows.Count, 6).End(xlUp).Row, 336))
    End With

    Set rSkills = Application.Selection
    Set rSkills = Application.InputBox("Select Job Competencies in Column A", , rSkills.Address, Type:=8)

    For Each c In rSkills
        Set cSkills = searchRng.Find(c.Value2, lookat:=xlPart)
        If Not cSkills Is Nothing Then
            firstSkill = cSkills.Address

            Do
                With SrcSheet
                    JobCode = .Cells(cSkills.Row, 6).Value2
                    JobTitle = .Cells(cSkills.Row, 7).Value2
                    CareerLevel = .Cells(cSkills.Row, 14).Value2
                End With

                ' Use Ctrl+G to view debug window
                Debug.Print cSkills.Address, cSkills.Value2

                Set cSkills = searchRng.FindNext(cSkills)
            Loop Until cSkills Is Nothing Or firstSkill = cSkills.Address
        End If
    Next c
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...