Страницы: 1
RSS
Сравнение ячеек в столбце одного листа с ячейками столбца в другом листе, несовпадение выделить красным, Сравнить ячейки столбца, столбцы А и 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

Изменено: Джек Восмеркин - 08.10.2018 13:57:10
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
и что не так? что не получилось то?
по описанию закрашивать на главном листе в коде красите на вспомогательно. как всетаки нужно?
да и файл не помешает.
Изменено: V - 08.10.2018 13:35:10
 
Условное форматирование с формулой ПОИСКПОЗ?
 
Цитата
Джек Восмеркин написал:
В листе Sheet1 надо перебрать ячейки столбца А, проверить каждую ячейку этого столбца на соответствие в листе "Категория КЕ" столбца G(G2:G100).
здесь все наоборот
If Sheets("Sheet1").Range("G" & j) = Sheets("Категория КЕ").Range("A" & i)
 
V, извините, попутал немного...))) Недоглядел...
В коде все верно
Перебор в первом  цикле становится на ячейку и начинает перебирать ячейки в подчиненном листе на соответствие.

Казанский, надо в VBA.....
Красится только на главном - если совпало то 0, если не совпало то Red... Почему то  все время в цикле  уходит в ELSE....

Голова уже пухнет
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
Повторюсь. Файл показываем.
 
Файл прикрепил.
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
Джек Восмеркин, .ColorIndex не может быть vbRed, т.е. 255. Замените на .Color
 
Код
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

Всем спасибо за внимание, участие и терпение...
Тему можно считать закрытой
Изменено: Джек Восмеркин - 08.10.2018 17:11:06
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
в посте #9 вам давно об этом показали.
Страницы: 1
Наверх