在两个不同的excel文件vb.net中的两个不同列中查找重复数据
我的代码根据行以两种不同的方式突出显示两列中的重复值。如果列顺序发生更改,则无法找到重复的值。建议在两个不同的excel文件vb.net中的两个不同列中查找重复数据,excel,vb.net,loops,Excel,Vb.net,Loops,我的代码根据行以两种不同的方式突出显示两列中的重复值。如果列顺序发生更改,则无法找到重复的值。建议 Public Sub CompareColumns(sourceCol As String, targetCol As String, sourceExcelFile As String, targetExcelFile As String) Try excelApp = New Excel.Application() excelA
Public Sub CompareColumns(sourceCol As String, targetCol As String, sourceExcelFile As String, targetExcelFile As String)
Try
excelApp = New Excel.Application()
excelApp.Visible = False
excelWorkbook = excelApp.Workbooks.Open(sourceExcelFile)
excelWorkbook2 = excelApp.Workbooks.Open(targetExcelFile)
excelWorkSheet1 = excelWorkbook.ActiveSheet
excelWorkSheet2 = excelWorkbook2.ActiveSheet
lastLineSource = excelWorkSheet1.UsedRange.Rows.Count
LastLineTarget = excelWorkSheet2.UsedRange.Rows.Count
For row As Integer = 1 To lastLineSource
If excelWorkSheet1.Range(sourceCol & row.ToString()).Value = excelWorkSheet2.Range(targetCol & row.ToString()).Value Then
excelWorkSheet2.Range(targetCol & row.ToString()).Interior.Color = 5296274
End If
Next
excelWorkbook.Save()
excelWorkbook2.Save()
excelWorkbook.Close()
excelWorkbook2.Close()
excelApp.Quit()
Catch
Throw
End Try
End Sub
预期的输出是,无论列顺序(排序)如何,都要突出显示源工作簿中目标工作簿中的所有重复值,因此我认为您应该使用字典: 您可以循环第一个工作簿中的所有值并将其添加到字典中。 然后,您应该循环第二个工作簿中的所有单元格,如果您在字典中找到值,则有重复项,如果没有,则没有重复项 无论顺序(排序)如何,它都能工作,而且速度相当快