【问题标题】:How to check two lists for match如何检查两个列表是否匹配
【发布时间】:2015-04-15 13:15:26
【问题描述】:

我想知道在 Excel 中检查两个文本列表的最佳方法是什么。我有一个列表,其中包含我的 HDD 上存在的文件名,我希望将这些文件名与第二个列表进行对比,我应该收到这些文件名以确保没有一个文件丢失。

我试过了

 =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 个文件。

【问题讨论】:

  • 请给我们您的初始输入,以及基于该输入的预期输出。
  • 抱歉混淆了,总共有两列。

标签: excel excel-formula vba


【解决方案1】:

我建议你使用 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)

【讨论】:

    【解决方案2】:

    从长远来看,shA.t 的答案可能会更容易,但如果你想使用 Vlookup,你可以这样做:

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

    在这种情况下,我将 HDD 上的文件列表放在一个命名范围内(简称为 HDD),并将已发送文件列表放在一个名为 Sent 的命名范围内。如果您愿意,您也可以轻松地将命名范围替换为 Sheet1!B1:B5。

    如果它未能在已发送列表中找到位于 HDD 列表中的文件,因此返回 #N/A,它会返回一条消息,告诉您未发送 HDD 列表中的哪个文件。

    如果您打算在一个工作表上仅包含三列(HDD 列表、已发送列表和公式),您可以删除其余列并使用以下内容:

    =VLOOKUP(HDD,Sent,1,FALSE)
    

    但是,如果您将两个列表放在单独的工作表或单独的 excel 文件中,那么第一个公式将起作用,并且可以更轻松地查看缺少哪些文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2018-05-16
      • 2017-11-30
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      相关资源
      最近更新 更多