Как сравнить одну строку со многими другими? - PullRequest
0 голосов
/ 09 июля 2019

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

Я попытался код сравнить первое имя первого списка ("A1") с первым в другом списке ("B1"), а затем сравните его со вторым («B3») и так далее, пока он не совпадет.Если он соответствует, он пишет «Соответствие» в третьем столбце или «Не соответствует», если нет совпадений

Sub CompareTest()
    Dim iComp As Integer, i As Integer, j As Integer
    Dim str1 As string, str2 As string

    For i = 1 to 20
        str1 = ("A" & i)

        For j = 1 to 20
            str2 = ("B" & j)
            iComp = StrComp(str1, str2, vbTextCompare)

            Select Case iComp
            Case 0
                Range ("C" & i) = "Match"
            Case 1
                Range ("C" & i) = "Match"
            End Select

            If Range ("C" & i) = "Match" Then Exit For
        Next j
    Next i
End Sub

В данный момент код пишет «Не соответствует» в каждой ячейке от 1 до20, хотя есть совпадения, и я не уверен, что не работает.

1 Ответ

0 голосов
/ 09 июля 2019

В вашем коде вы сравниваете строки "An" и "Bn", а не содержимое адреса. Но даже если вы исправите это, вы все равно напишите «Match», если str1 равно или больше str2. Наверное, не то, что вы хотите.

Вы, вероятно, можете сделать что-то вроде:

C1:  =IF(COUNTIF(B:B,A1),"Match","Not a Match")

или, в коде

Option Explicit
Sub matcher()
    Dim WS As Worksheet
    Dim C As Range, rSearch As Range, rLookup As Range

Set WS = Worksheets("sheet2")
With WS
    Set rLookup = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
    Set rSearch = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp))
    .Columns(3).Clear
End With


For Each C In rLookup
    If rSearch.Find(what:=C, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False) Is Nothing Then
        C.Offset(0, 2) = "No Match"
    Else
        C.Offset(0, 2) = "Match"
    End If
Next C

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