Как сравнить две таблицы в excel с помощью vba?

Пользователь

от miguel_ritchie , в категории: Другие , год назад

Как сравнить две таблицы в excel с помощью vba?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от marlen , год назад

@miguel_ritchie 

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


Ниже приведен пример кода VBA, который сравнивает две таблицы в листах "Таблица1" и "Таблица2" и выводит различия в лист "Отчет":

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Sub Сравнить_таблицы()

Dim лист1 As Worksheet
Dim лист2 As Worksheet
Dim отчет As Worksheet
Dim i As Long, j As Long, k As Long
Dim строка As String

Set лист1 = Worksheets("Таблица1")
Set лист2 = Worksheets("Таблица2")
Set отчет = Worksheets.Add

'Заголовки отчета
отчет.Cells(1, 1) = "Различия в таблицах"
отчет.Cells(2, 1) = "Ячейка"
отчет.Cells(2, 2) = "Значение в Таблице1"
отчет.Cells(2, 3) = "Значение в Таблице2"

k = 3 'Строка, с которой начинаются записи в отчете

'Сравнение значений ячеек
For i = 1 To лист1.UsedRange.Rows.Count
    For j = 1 To лист1.UsedRange.Columns.Count
        If лист1.Cells(i, j) <> лист2.Cells(i, j) Then
            строка = "A" & k
            отчет.Range(строка).Value = "Ячейка " & лист1.Cells(i, j).Address & " отличается"
            отчет.Range("B" & k).Value = лист1.Cells(i, j).Value
            отчет.Range("C" & k).Value = лист2.Cells(i, j).Value
            k = k + 1
        End If
    Next j
Next i

'Форматирование отчета
With отчет.Range("A1:C" & k - 1)
    .Borders.LineStyle = xlContinuous
    .Columns("B:C").HorizontalAlignment = xlLeft
    .Columns("A").HorizontalAlignment = xlRight
    .EntireColumn.AutoFit
End With

End Sub


В этом коде используются три переменные типа Worksheet для обращения к листам "Таблица1", "Таблица2" и новому листу "Отчет". Затем производится перебор значений в каждой таблице, и если значения не совпадают, то записывается информация в новую строку в листе "Отчет". В конце происходит форматирование отчета.


Обратите внимание, что этот код предполагает, что таблицы имеют одинаковый размер и структуру. Если таблицы имеют разный размер или структуру, то этот код нужно будет изменить, чтобы учесть эти различия.