我试图比较两个列表中的值。我希望我的代码比较第一个列表中的值,并检查第二个列表中的所有条目。如果有匹配,则代码将在第一个列表中的值旁边打印true,如果不匹配,则将打印false。
我遇到的问题是,我的代码只比较同一行中的值。
代码运行,我在两个较小的列表上尝试过,以确保数据类型是相同的,并且列表中没有任何额外的空格或逗号会导致"False“输出。我也尝试过更改for和if语句的顺序,但这也不起作用。
Sub findvalues()
    For i = 2 To 16
        For j = 2 To 16
            If Cells(i, 3).Value = Cells(i, 1).Value Then
                Cells(i, 4).Value = "TRUE"
            ElseIf Cells(i, 3).Value = Cells(j + 1, 1).Value Then
                Cells(i, 4).Value = "TRUE"
            Else
                Cells(i, 4).Value = "FALSE"
            End If
        Next j
    Next i
End Sub发布于 2019-04-25 13:08:08
有许多是为了实现这一目标。其中之一是使用IF & COUNTIF
公式
=IF(COUNTIF($E$2:$E$6,A2)>0,"TRUE","FALSE")结果:

VBA代码
Option Explicit
Sub findvalues()
    Dim i As Long
    Dim rng As Range
    With ThisWorkbook.Worksheets("Sheet1") 'Change if needed
        Set rng = .Range("A2:A130") 'set rng to includes values from column A, rows 2:130
        For i = 2 To 130 'Loop from row 2 to 130
            'Check if the values in column C includes in the rng
            If Application.WorksheetFunction.CountIf(rng, .Range("C" & i).Value) > 0 Then
                .Range("D" & i).Value = "TRUE"
            Else
                .Range("D" & i).Value = "FALSE"
            End If
        Next i
    End With
End Sub发布于 2019-04-25 13:30:21
根据您在第1和第3栏中提供的数据对您的代码做了轻微的修改。
Sub findvalues()
    Dim i As Long, j As Long, bResult As Boolean
    For i = 2 To 16
        strValueToLookFor = Cells(i, 1)
        For j = 2 To 16
            bResult = False
            If strValueToLookFor = Cells(j, 3).Value Then
                bResult = True
                Exit For
            End If
        Next j
        Cells(i, 6).Value = bResult
    Next i
End Sub..。您可能只需要在第二个列表上按下列,这样第一个列表就会搜索,反之亦然。
发布于 2019-04-25 13:45:19
我认为不需要使用VBA --公式是可行的--但是为了避免两个循环,可以这样做:
Sub findvalues()
Dim i As Long
For i = 2 To 130
    Cells(i, 4).Value = IsNumeric(Application.Match(Cells(i, 1).Value, Range("C2:C130"), 0))
Next i
End Sub更新:这不适合多个匹配。
https://stackoverflow.com/questions/55849395
复制相似问题