Windows10系统
一个文件夹下面大概有50个Excel表格,每个表格里面都有一列数据为发票号码,想比对这50个表格里面,发票号码有没有重复的。
请问有相关软件或者便捷的方法吗?
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
folderPath
变量为你的文件夹路径。Dir
函数用于遍历文件夹中的所有 .xls
和 .xlsx
文件。Alt + F11
打开VBA编辑器,插入一个新的模块并粘贴代码)。CheckDuplicateInvoices
宏,它会自动检查文件夹中的所有表格并报告重复的发票号码。这样可以帮你快速找出所有表格中的重复发票号码。如果有更复杂的需求,可以进一步扩展代码。
我最近干过类似的事,用的就是一楼的方法,合并表格然后标记重复值
如果所有表都在同一个名称的Sheet中,然后发票号码的列名都一样,那么可以用Power Query处理。
对,Power Query是标准做法。
如果表格结构一样,这部分可以用下面提到的Power Query