У меня есть код из другого поста, но я не могу понять, чтобы он выделил отдельные различия в ячейках в каждой строке. У меня есть текущий лист и предыдущий лист; идея состоит в том, что код должен сравнивать серийные номера в одном столбце (то же самое на обоих листах) и делать две вещи:
1) Если значение отображается на текущем листе, но отсутствует на предыдущем, тогда вся строка на текущем листе выделяется зеленым цветом. (Это работа с текущим кодом); а также
2) Если совпадающее значение находится на обоих листах, то строки должны сравниваться, и любое значение на текущем листе, отличное от предыдущего, выделяется желтым цветом. (Это не работает)
Количество и порядок столбцов всегда одинаковы. Серийные номера не меняются и являются уникальными для каждой записи. Код, на который я смотрел:
Sub NewUpdates()
Const ID_COL As Integer = 31 'ID is in this column
Const NUM_COLS As Integer = 32 'how many columns are being compared?
Dim shtNew As Excel.Worksheet, shtOld As Excel.Worksheet
Dim rwNew As Range, rwOld As Range, f As Range
Dim x As Integer, Id
Dim valOld, valNew
Set shtNew = ActiveWorkbook.Sheets("CurrentList")
Set shtOld = ActiveWorkbook.Sheets("PreviousList")
Set rwNew = shtNew.Rows(5) 'first entry on "current" sheet
Do While rwNew.Cells(ID_COL).Value <> ""
Id = rwNew.Cells(ID_COL).Value
Set f = shtOld.UsedRange.Columns(ID_COL).Find(Id, , xlValues, xlWhole)
If Not f Is Nothing Then
Set rwOld = f.EntireRow
For x = 1 To NUM_COLS
If rwNew.Cells(x).Value <> rwOld.Cells(x).Value Then
rwNew.Cells.Interior.Color = vbYellow
Else
rwNew.Cells.Interior.ColorIndex = xlNone
End If
Next x
Else
rwNew.EntireRow.Interior.Color = vbGreen 'new entry
End If
Set rwNew = rwNew.Offset(1, 0) 'next row to compare
Loop
End Sub
Я ничего особо не изменил в самой кодировке, но первоначальное обсуждение, из которого я взял это, больше не продолжалось. Любые идеи по обновлению, чтобы я мог выделить его для отображения отдельных ячеек?
edit: нашел ссылку, по которой Тим Уильямс ответил на аналогичный вопрос, и я нашел этот код. здесь .