Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个不同的excel文件vb.net中的两个不同列中查找重复数据_Excel_Vb.net_Loops - Fatal编程技术网

在两个不同的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

预期的输出是,无论列顺序(排序)如何,都要突出显示源工作簿中目标工作簿中的所有重复值,因此我认为您应该使用字典:

您可以循环第一个工作簿中的所有值并将其添加到字典中。 然后,您应该循环第二个工作簿中的所有单元格,如果您在字典中找到值,则有重复项,如果没有,则没有重复项

无论顺序(排序)如何,它都能工作,而且速度相当快