Лист1 Лист2
Выше у меня есть две ссылки на изображения, которые я взял из моего документа Excel (Лист 1, Лист 2)
Вот краткое описание, я просто хочу, чтобы мои макросы сравнивали номер детали (столбец C) с обоих листов и выясняли различия. И когда между двумя листами обнаруживаются различия строк, она выделяет строку на обоих листах списка спецификаций, чтобы указать пользователю различия в номере детали (столбец C). Но это тоже проблема, поскольку на изображениях есть некоторые строки с «пробелом», о которых должен заботиться цикл, чтобы предотвратить сравнение пустой строки, что дает неверный результат.
Извините за плохое владение английским языком и объяснения, если вам не понятно. Может ли кто-нибудь помочь мне в этом, я довольно бесцелен в том, с чего и как начать, и я должен завершить это в течение недели без предварительных знаний о понимании программирования в Excel-VBA.
Изменено:
Я обновил свой пост, может кто-нибудь взглянуть и высказать свое мнение о том, как я могу изменить код, чтобы выделить всю строку столбца от A до P вместо столбца C Только различия значений диапазона?
Sub differences()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRow1 As Integer, lastrow2 As Integer
Dim rng1 As Range, rng2 As Range, temp As Range, found As Range
Application.ScreenUpdating = False
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
lastRow1 = ws1.Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = ws2.Range("A" & Rows.Count).End(xlUp).Row
Set rng1 = ws1.Range("C21:C" & lastRow1)
Set rng2 = ws2.Range("C21:C" & lastrow2)
For Each temp In rng1
Set found = Find_Range(temp.Value, rng2, , xlWhole)
If found Is Nothing Then
temp.Interior.ColorIndex = 3
End If
Next temp
For Each temp In rng2
Set found = Find_Range(temp.Value, rng1, , xlWhole)
If found Is Nothing Then
temp.Interior.ColorIndex = 3
End If
Next temp
End Sub
Function Find_Range(Find_Item As Variant, Search_Range As Range, Optional LookIn As Variant, Optional LookAt As Variant, Optional MatchCase As Boolean) As Range
Dim c As Range
Dim firstAddress As String
If IsMissing(LookIn) Then LookIn = xlValues 'xlFormulas
If IsMissing(LookAt) Then LookAt = xlPart 'xlWhole
If IsMissing(MatchCase) Then MatchCase = False
With Search_Range
Set c = .Find(What:=Find_Item, LookIn:=LookIn, LookAt:=LookAt, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=MatchCase, SearchFormat:=False)
If Not c Is Nothing Then
Set Find_Range = c
firstAddress = c.Address
Do
Set Find_Range = Union(Find_Range, c)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Function