У меня есть два листа, которые содержат одни и те же точки данных. Мне нужно сравнить Sheet1 (действительные данные) с Sheet2 и посмотреть, что было изменено на Sheet2, изменив цвет ячейки на красный. Я пробовал этот макрос, но он рисовал все, а не только разные ячейки. Ниже приведены изображения, которые показывают небольшое подмножество данных, в действительности есть примерно 3K строк на каждом листе Image1 Image2Сравните два рабочих листа и разницу в цвете
И это синтаксис я пытался (это не работает из-за выделения все почти)
Dim mycell As Range
Dim mydiff As Integer
Dim shtSheet1 As String
Dim shtSheet2 As String
shtSheet2 = "Sheet2"
shtSheet1 = "Sheet1"
For Each mycell In ActiveWorkbook.Worksheets(shtSheet2).UsedRange
If Not mycell.Value = ActiveWorkbook.WOrksheets(shtSheet1).Cells(mycell.Row, mycell.Column).Value Then
mycell.Interior.Color = vbRed
mydiffs = mydiffs+1
End If
Next
РЕДАКТИРОВАТЬ
Предложенные ниже по-прежнему производить неточные результаты, так что я скопировать/вставить несколько значений в Блокнот для сравнения, и я обнаружил, что один лист имеет некоторые случайные пробелы после значения, которые будут вызывать данные из Лист1 - Лист2 никогда не будет идентичным.
Имеет ли VBA функцию/функцию TRIM(), которая может быть добавлена, поэтому случайные пробелы в конце данных не будут иметь значения при сравнении?
Вы пытались заменить (shtSheet1) .Cells (mycell.Row ... с (shtSheet1) .Range (mycell.Row ...? –
Вам может понравиться относительно требования VBA TRIM(). –
skkakkar