Porównanie dwóch arkuszy  Excel-a Makro Excel

Porównanie dwóch arkuszy Excel-a Makro Excel

Porównanie dwóch arkuszy programu Excel korzystając Makro Excela , zaznacz  z duplikowane wiersze skopiować je do nowego arkusza excel.

Mamy dwa arkusze w Excelu i chcemy je porównać ze sobą . A pasujące wiersze przekopiować do nowego arkusza Excela

Może komuś będzie to przydatne

Rozwiń jeżeli nie wiesz jak zacząć i z czym się to je

Aby dowiedzieć się więcej, kliknij tutaj

Jeżeli ktoś nie wie jak zacząć  to Niech zajrzy do tego Wpisu

 

Pamiętaj o zmianie parametrów pod swój arkusz czyli

-Nazwy arkuszy w CompareWorksheets Worksheets(„Arkusz1”), Worksheets(„Arkusz2”)  Lub zimnń samemu

Sub Compare()
'
' Macro1 Macro
'CompareWorksheets Worksheets("WPISZ SWOJĄ NAZWE ARKUSZA"), Worksheets("WPISZ SWOJA NAZWĘ ARKUSZA DRUGIEGO ")
'
' compare two different worksheets in the active workbook

CompareWorksheets Worksheets("Arkusz1"), Worksheets("Arkusz2")
End Sub

Sub CompareWorksheets(ws1 As Worksheet, ws2 As Worksheet)
Dim dupRow As Boolean
Dim r As Long, c As Integer, m As Integer
Dim lr1 As Long, lr2 As Long, lc1 As Integer, lc2 As Integer, lr3 As Long
Dim maxR As Long, maxC As Integer, cf1 As String, cf2 As String
Dim dupCount As Long

Application.ScreenUpdating = False
Application.StatusBar = "Creating the report..."
Application.DisplayAlerts = True

With ws1.UsedRange
lr1 = .Rows.Count
lc1 = .Columns.Count
End With

With ws2.UsedRange
lr2 = .Rows.Count
lc2 = .Columns.Count
End With
maxR = lr1
maxC = lc1
If maxR < lr2 Then maxR = lr2
If maxC < lc2 Then maxC = lc2
DiffCount = 0
lr3 = 1
For i = 1 To lr1
dupRow = True

Application.StatusBar = "Comparing cells " & Format(i / maxR, "0 %") & "..."

For r = 1 To lr2
For c = 1 To maxC

ws1.Select
cf1 = ""
cf2 = ""

On Error Resume Next

cf1 = ws1.Cells(i, c).FormulaLocal
cf2 = ws2.Cells(r, c).FormulaLocal

On Error GoTo 0

If cf1 <> cf2 Then
dupRow = False
Exit For

Else
dupRow = True
End If

Next c

If dupRow Then
dupCount = dupCount + 1
ws1.Range(ws1.Cells(i, 1), ws1.Cells(i, maxC)).Select
Selection.Copy
Worksheets("Sheet3").Select
Worksheets("Sheet3").Range(Worksheets("Sheet3").Cells(lr3, 1), Worksheets("Sheet3").Cells(lr3, maxC)).Select
Selection.PasteSpecial
lr3 = lr3 + 1

ws1.Select
For t = 1 To maxC
ws1.Cells(i, t).Interior.ColorIndex = 19
ws1.Cells(i, t).Select
Selection.Font.Bold = True
Next t
End If
Next r
Next i

Application.StatusBar = "Formatting the report..."
'Columns("A:IV").ColumnWidth = 10
m = dupCount
Application.StatusBar = False
Application.ScreenUpdating = True

MsgBox m & " Rows contain same values!", vbInformation, _
"Compare " & ws1.Name & " with " & ws2.Name

End Sub

Ekipa z  Vertical Horizons  wielkie dzięki