Excel - 需要查找列B中是否找到A列中的任何内容

时间:2013-06-24 17:39:45

标签: excel excel-vba excel-formula vba

基本上,我在Excell中有2个电子邮件地址列表......

Column A = Holds over 2051 rows of email addresses
Column B = Holds about 1994 rows of email addresses

我需要一种方法来找出列B中找不到列A中的哪些电子邮件地址,并且最好将结果输出到新表或C列中。

之后,我需要能够找到列A中没有找到B列中的哪些电子邮件地址(如果有的话),并将该列表输出到新表或D列中。

我该怎么做?

3 个答案:

答案 0 :(得分:6)

在新工作表或C列中,使用VLOOKUP()和IFERROR()的组合,并为A的每一行拖动该公式。

=IF(ISERROR(VLOOKUP(A1, $B$1:$B$1995, 1, 0)), A1 & " NOT FOUND IN COLUMN B", "FOUND IN B")

这将返回两个不同的消息,具体取决于是否在B中找到了电子邮件。

答案 1 :(得分:1)

为什么不将B列数据粘贴到A列末尾?然后为列设置条件格式以突出显示计数超过1的所有项目。使用此公式“=countif($A$1:A1,A1)>1”,不带引号。确保在执行此操作时选择了整个列。

维护数据分离的另一种方法。在C列中使用类似=IF(ISERROR(VLOOKUP(A1,$B$1:$B$100,1,0)),A1,"")的公式;更改范围以匹配您的数据范围。然后填写公式直到A列中的数据结束。要填充,请选择所需的范围并按“Cntl + D”。对列D重复此操作,但交换公式中的A和B引用并向下填充,直到列B数据的底部。这将导致C和C列中的数据。 D列出唯一值。复制并粘贴这些值,如果使用默认粘贴,请务必粘贴为值Excel将粘贴公式而不是数据粘贴到另一组列(E& F)或相同列中,然后对每列进行排序以消除空间。

答案 2 :(得分:0)

您可以使用此子..

Sub CrossCheck()
Dim LastA, LastB, r As Range
Dim x, Cn, Dn As Long

Set LastA = Range("A65536").End(xlUp)
Set LastB = Range("B65536").End(xlUp)
Cn = 1
Dn = 1

For x = 1 To LastB.Row
    Set r = Columns("B").Find(Cells(x, 1), , xlValues, xlWhole)
    If r Is Nothing Then
      Cells(Cn, 3) = Cells(x, 1)
      Cn = Cn + 1
    End If
Next
For x = 1 To LastA.Row
    Set r = Columns("A").Find(Cells(x, 2), , xlValues, xlWhole)
    If r Is Nothing Then
      Cells(Dn, 4) = Cells(x, 2)
      Dn = Dn + 1
    End If
Next

End Sub

希望这有帮助!!