Сравнение ячеек в столбце одного листа с ячейками столбца в другом листе, несовпадение выделить красным, Сравнить ячейки столбца, столбцы А и B на разных листах.
Есть листы "Sheet1"(главный) и "Категория КЕ"(подчиненный). В листе Sheet1 надо перебрать ячейки столбца А, проверить каждую ячейку этого столбца на соответствие в листе "Категория КЕ" столбца G(G2:G100). Если соответствие есть - соответствующая ячейка листа "Sheet1" желтая, Если соответствия нет - эта ячейка красная... Вроде должно быть 2 цикла, внешний и внутренний - каждую ячейку проверять полным перебором в подчиненной таблице.. Но что то заплюхался совсем..код что то не работает так как надо...
Код
For j = 5 To iLastRow
For i = 1 To iLastRow1
If Sheets("Sheet1").Range("G" & j) = Sheets("Категория КЕ").Range("A" & i) Then
Sheets("Sheet1").Range("G" & j).Interior.ColorIndex = 0
Else
'MsgBox Range("G" & j)
Sheets("Sheet1").Range("G" & j).Interior.ColorIndex = vbRed 'vbBlue
End If
Next i
Next j
и что не так? что не получилось то? по описанию закрашивать на главном листе в коде красите на вспомогательно. как всетаки нужно? да и файл не помешает.
Джек Восмеркин написал: В листе Sheet1 надо перебрать ячейки столбца А, проверить каждую ячейку этого столбца на соответствие в листе "Категория КЕ" столбца G(G2:G100).
здесь все наоборот If Sheets("Sheet1").Range("G" & j) = Sheets("Категория КЕ").Range("A" & i)
V, извините, попутал немного...))) Недоглядел... В коде все верно Перебор в первом цикле становится на ячейку и начинает перебирать ячейки в подчиненном листе на соответствие.
Казанский, надо в VBA..... Красится только на главном - если совпало то 0, если не совпало то Red... Почему то все время в цикле уходит в ELSE....
Голова уже пухнет
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
For j = 3 To iLastRow
For i = 2 To iLastRow1
If Sheets("Sheet1").Range("G" & j) = Sheets("Êàòåãîðèÿ ÊÅ").Range("A" & i) Then n = 1: Exit For
Next i
Sheets("Sheet1").Range("G" & j).Interior.Color = IIf(n, vbYellow, vbRed)
n = 0
Next j
Нашел ошибку, при совпадении не было выхода из внутреннего цикла. Теперь код работает согласно заявленным требованиям - совпадения Желтые, несовпадения Красные. Рабочий код таков:
Код
Private Sub CommandButton1_Click()
MsgBox "Запускаем проверку?", vbYesNoCancel, "Проверка листа на соответствие справочников"
Dim iLastRow As Long, iLastRow1 As Long, iLastRow2 As Long
With Sheets("Sheet1")
iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With Sheets("Категория КЕ")
iLastRow1 = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For j = 5 To iLastRow
For i = 1 To iLastRow1
If Sheets("Sheet1").Range("G" & j) = Sheets("Категория КЕ").Range("A" & i) Then
Sheets("Sheet1").Range("G" & j).Interior.Color = 65535 '0
Exit For
Else
Sheets("Sheet1").Range("G" & j).Interior.Color = 192 '192 'vbBlue
End If
Next i
Next j
MsgBox "Проверка окончена - несоотвествие выделено", vbYes, "Проверка листа на соотвествие справочников"
End Sub
Всем спасибо за внимание, участие и терпение... Тему можно считать закрытой