多个Excel表格进行重复内容比对的问题

Windows10系统

一个文件夹下面大概有50个Excel表格,每个表格里面都有一列数据为发票号码,想比对这50个表格里面,发票号码有没有重复的。

请问有相关软件或者便捷的方法吗?

我能想到的只有合并到一张表里,然后加一列文件名区分,再通过Conditional Formatting - Highlight Cell Rules - Duplicate Values标识重复,再通过Filter的Filter by Color把重复的筛选出来。

VBA就好了。我帮你问了AI:

Sub CheckDuplicateInvoices()
    Dim folderPath As String
    Dim fileName As String
    Dim ws As Worksheet
    Dim invoiceDict As Object
    Dim invoice As String
    Dim lastRow As Long
    Dim cell As Range
    Dim duplicateFound As Boolean
    
    ' 获取文件夹路径(这里需要手动修改或让用户输入)
    folderPath = "C:\Users\oll_king.zhang\Desktop\新建文件夹\"  ' 请修改为实际路径
    If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
    
    ' 创建一个字典对象来存储发票号码
    Set invoiceDict = CreateObject("Scripting.Dictionary")
    invoiceDict.CompareMode = vbTextCompare ' 不区分大小写
    
    ' 获取文件夹下的所有Excel文件
    fileName = Dir(folderPath & "*.xls*")
    
    ' 遍历所有文件
    Do While fileName <> ""
        ' 打开文件
        Workbooks.Open folderPath & fileName
        Set ws = ActiveSheet
        
        ' 获取当前工作表A列的最后一行
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
        
        ' 遍历A列,检查是否有重复发票号码
        duplicateFound = False
        For Each cell In ws.Range("A2:A" & lastRow) ' 假设数据从A2开始
            invoice = cell.Value
            If invoiceDict.Exists(invoice) Then
                ' 如果发票号码已存在,标记为重复
                duplicateFound = True
                Exit For
            Else
                ' 否则,添加到字典
                invoiceDict.Add invoice, fileName
            End If
        Next cell
        
        ' 如果找到了重复的发票号码
        If duplicateFound Then
            MsgBox "重复发票号码在文件: " & fileName & " 中找到了!"
        End If
        
        ' 关闭当前工作簿
        Workbooks(fileName).Close SaveChanges:=False
        
        ' 继续下一个文件
        fileName = Dir
    Loop
    
    MsgBox "检查完成,重复发票号码已显示。"
End Sub

说明:

  1. 文件夹路径:你需要修改 folderPath 变量为你的文件夹路径。
  2. 字典对象:使用字典来存储发票号码。字典可以有效地检测重复值。
  3. 文件遍历Dir 函数用于遍历文件夹中的所有 .xls.xlsx 文件。
  4. 数据遍历:假设发票号码在每个工作表的A列,从第2行开始(A2)。你可以根据实际情况调整范围。
  5. 重复检测:如果发票号码已经存在于字典中,代码会弹出提示框告知用户重复的文件。

使用步骤:

  1. 将代码复制到Excel的VBA编辑器中(按 Alt + F11 打开VBA编辑器,插入一个新的模块并粘贴代码)。
  2. 修改文件夹路径为实际路径。
  3. 运行 CheckDuplicateInvoices 宏,它会自动检查文件夹中的所有表格并报告重复的发票号码。

这样可以帮你快速找出所有表格中的重复发票号码。如果有更复杂的需求,可以进一步扩展代码。

我最近干过类似的事,用的就是一楼的方法,合并表格然后标记重复值

如果所有表都在同一个名称的Sheet中,然后发票号码的列名都一样,那么可以用Power Query处理。

对,Power Query是标准做法。

如果表格结构一样,这部分可以用下面提到的Power Query
EXCEL_bhHJFq8t3W.png
EXCEL_kaj87iUPkI.png
EXCEL_ISsknkH4al.png
EXCEL_f9mYa6NI0h.png

1 个赞