Поиск дубликатов данных в двух разных столбцах в двух разных файлах Excel vb.net - PullRequest
0 голосов
/ 22 мая 2019

мой код выделяет повторяющиеся значения в двух столбцах в двух разных на основе строк.почему-то не удается найти дубликаты вейлов, если порядок столбцов изменяется.предложения?

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

ожидаемый вывод для всех дубликатов значений в целевой книге, найденной в исходной книге, которые будут выделены независимо от порядка столбцов (сортировки)

1 Ответ

0 голосов
/ 22 мая 2019

Поэтому я думаю, что вы должны использовать словарь: https://www.dotnetperls.com/dictionary-vbnet

Вы можете просмотреть все значения в первой книге и добавить их в словарь. Затем Вам нужно пройтись по всем ячейкам во второй книге, и если Вы найдете значение в словаре, то у Вас будет дубликат, если нет, то дубликат не будет.

Работает независимо от порядка (сортировки) и довольно быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...