EXCEL数组公式,用于指示一个范围内的值是否存在于另一个范围内

时间:2015-10-02 16:07:07

标签: excel-vba excel-formula vba excel

我在A列中有一个值列表,在B列中有另一个值列表。

如果A列中的任何值在B列中,或者FALSE在A列中没有值在B列中,我试图让C列中的单个单元格显示为TRUE。

我尝试了MATCH(查找值,范围内),但只查看A中的一个值。

没有VBA可以做到这一点吗?也可以打开VBA解决方案。感谢

2 个答案:

答案 0 :(得分:2)

这是一个快速而又脏的UDF。

Public Function Exist(a As Range, b As Range) As Boolean
Dim temp As Boolean
temp = False
For Each cel In a
    If WorksheetFunction.CountIf(b, cel.value) > 0 Then
        temp = True
        Exit For
    End If
Next cel

exist = temp

End Function

答案 1 :(得分:0)

我使用过这样的东西来比较VBA中一个列表中的值和另一个列表中的值。如果您有很多要检查的值,可能需要一段时间。只需将B范围设置为您工作表上的范围。

Option Explicit
Dim Index As Long
Dim valueFound As Range
Sub compareAandB()

Index = 2

Do While ThisWorkbook.ActiveSheet.Cells(Index, 1) <> ""

    Set valueFound = ThisWorkbook.ActiveSheet.Range("B2:B1000").Find(ThisWorkbook.ActiveSheet.Cells(Index, 1))

    If valueFound Is Nothing Then
        ThisWorkbook.ActiveSheet.Cells(Index, 3) = "Not Found"
    Else
        ThisWorkbook.ActiveSheet.Cells(Index, 3) = "Found"
    End If
    Index = Index + 1
Loop
End Sub