excel - 在两个不同的excel文件vb.net的两个不同列中查找重复数据
问题描述
我的代码根据行以两个不同的方式突出显示两列中的重复值。如果更改列顺序,它以某种方式无法找到重复的值。建议?
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
预期的输出是在源工作簿中找到的目标工作簿中的所有重复值都将被突出显示,而不管列顺序(排序)
解决方案
所以我认为你应该使用字典: https ://www.dotnetperls.com/dictionary-vbnet
您可以遍历第一个工作簿中的所有值并将其添加到字典中。然后你应该遍历第二个工作簿中的所有单元格,如果你在字典中找到值,那么你有重复,如果没有,那么没有重复。
无论顺序(排序)它都可以工作并且速度非常快。
推荐阅读
- c# - 在代码中重用数据契约作为对象模型的推荐模式是什么?
- angular - 如何以正确的方式触发显示消息
- python - 在 Django 中,如何获取通过外键连接的子对象?
- sql-server - Microsoft SQL Server 2017 开发者下载错误问题
- php - 如何将活动类添加到第一个 foreach 项目?
- c - 声明为静态的局部变量需要多少空间?
- c# - (Ironpython/Winforms) 从 for 循环中的文本框中检索值
- php - 如何修复错误参数必须是数组或实现了Countable的对象
- regex - Perl 脚本卡住了
- java - 如何创建在嵌套列表中共享公共字段的对象列表(Java)