如何检查两个匹配列表

时间:2015-04-15 13:15:26

标签: excel excel-vba excel-formula vba

我想知道在Excel中检查两个文本列表的最佳方法。我有一个列表,其中有文件名存在于我的硬盘上,我希望在第二个列表中引用这些文件名,我应该收到这些文件名,以确保它们都没有丢失。

我确实尝试了

 =VLOOKUP(A2,Sheet9!A:B,2,FALSE)

虽然这会带回一个值,但它与列表中的值不匹配。

如果您需要更多说明,请告知我们。 我现在无法发布图像,所以希望这个(例子)能够清除一些内容。

据称发送的文件列表: -

  • CC-2245-SXV.PDF
  • CC-2222-SXV.PDF
  • CC-0001-SXV.PDF
  • DF-2322-CDSC.PDF
  • CC-6221-SXV.PDF

我的硬盘上的文件名: -

  • CC-0001-SXV.PDF
  • CC-0161-SXV.PDF
  • CC-2221-CCXV.PDF
  • CC-6221-SXV.PDF
  • DF-2322-CDSC.PDF

我想自动化这个的原因是因为我正在处理1000个文件。

2 个答案:

答案 0 :(得分:0)

我建议你使用VBA功能:

Function FULLMATCH(Range1 As Range, Range2 As Range) As Boolean

    Dim cell As Range
    FULLMATCH = False

    For Each cell In Range1.Cells
        If (cell.Value <> Range2.Cells(cell.Row, cell.Column).Value) Then
            Exit Function
        End If
    Next

    FULLMATCH = True
End Function

并像这个例子一样使用它:

=FULLMATCH(A:A;B:B)

答案 1 :(得分:0)

shA.t的答案可能会更容易长期,但如果你想使用Vlookup你可以做这样的事情:

=IF(ISNA(VLOOKUP(HDD,Sent,1,FALSE)),CONCATENATE("File not sent: ",HDD),VLOOKUP(HDD,Sent,1,FALSE))

在这种情况下,我将硬盘上的文件列表放在名为HDD的命名区域和名为Sent的命名范围内的已发送文件列表中。如果你愿意的话,你可以像Sheet1!B1:B5一样轻松地替换命名范围。

如果无法在HDD列表中的“已发送”列表中找到文件,从而返回#N / A而是返回一条消息,告知您未发送HDD列表中的哪个文件。

如果你计划在一个工作表上只有三列(硬盘列表,已发送列表和公式),你可以删除其余的,只需使用它:

=VLOOKUP(HDD,Sent,1,FALSE)

但是,如果您将两个列表放在单独的工作表或单独的Excel文件中,并且可以更容易地查看哪些文件丢失,则第一个公式将起作用。