Страницы: 1
RSS
Заливка по условному форматированию при активности в соответствующих строках, Условное форматирование при нескольких условиях. MS Excell 2003
 
Здравствуйте. Помогите с условным форматированием для Excell 2003.
Необходимо, чтобы была заливка ячеек при срабатывании условия и активности (ввод данных) в соответствующих строках.
Условное форматирование при активности в строках сделал, но не могу добавить условие при наличии символа (можно любую цифру) "+" в определенном столбце.
Пример прилагаю.
 
Добавил условное форматирование для подсветки коэффициентов, которые используются для нужных строк и добавил условие поиска символа "+" по столбцу в заданном интервале:

И(ИЛИ(И(ЯЧЕЙКА("строка")>=СТРОКА(A17);ЯЧЕЙКА("строка")<=СТРОКА(A22)));СЧЁТЕСЛИ(W18:W21;"+"))

но никак не могу сделать привязку активной строки и содержанием "+" в столбце W. Поэтому срабатывает форматирование всегда, когда в диапазоне столбца W18:W21 имеется "+", не зависимо в активной строке или нет.
Изменено: Максим - 07.04.2026 16:43:34
 
Наверное не совсем понятно выглядит запрос на помощь, раз нет ответов. Постараюсь иначе сформулировать задачу:
При в воде данных должны подсвечиваться коэффициенты из соответствующих строк диапазона N2:R8, но при этом должна быть проверка строки, в которую вносятся данные, на наличие "+" на пересечении со столбцом W.

Например: если данные вносятся в строке 20 (ячейки I20:L20), то идёт проверка на наличие "+" в ячейке W20. Если "+" отсутствует, то выделяются форматированием (заливка) ячейки N5:R5. Иначе ("+" имеется в ячейке W20) - выделяются форматированием (заливка) ячейки N8:R8.

Формула: И(ИЛИ(И(ЯЧЕЙКА("строка")>=СТРОКА(A17);ЯЧЕЙКА("строка")<=СТРОКА(A22)));СЧЁТЕСЛИ(W18:W21;"+")) ведет проверку по всем строкам диапазона столбца W, а необходимо проверять только в строке, в которую вносят данные (после нажатия Enter).
Изменено: Максим - 08.04.2026 17:00:34
 
Код
=И(ИЛИ(И(ЯЧЕЙКА("строка")>=СТРОКА(A17);ЯЧЕЙКА("строка")<=СТРОКА(A22)));ИНДЕКС($W$1:$W$21;ЯЧЕЙКА("строка"))="+")

Цитата
написал:
Наверное не совсем понятно выглядит запрос на помощь, раз нет ответов.
Так всё и было)
 
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rInput As Range
    On Error Resume Next
    Set rInput = Intersect(Target, Range("H10:L21"))
    On Error GoTo 0
    If rInput Is Nothing Then Exit Sub
    
    Dim ci As Range
    For Each ci In rInput.Cells
        ChangeCell ci
    Next
End Sub

Private Sub ChangeCell(inputCell As Range)
    Dim rg As Range, rw As Range
    Set rw = Range("W" & inputCell.Row)
    Set rg = Range("G" & inputCell.Row).MergeArea.Cells(1, 1)
    
    Dim targetRow As Long
    If rw.Value = "+" Then
        targetRow = WorksheetFunction.Match(rg.Value & "+", Range("R1:R8"), 0)
    Else
        targetRow = WorksheetFunction.Match(rg.Value, Range("R1:R8"), 0)
    End If
    
    Range("N3:R8").Interior.Color = RGB(255, 255, 153)
    Range("N1:R8").Rows(targetRow).Interior.Color = RGB(255, 128, 128)
End Sub
 
Цитата
МатросНаЗебре написал:
Так всё и было)
настолько был увлечён самостоятельным поиском решения, что даже не заметил, что запрос получился сумбурным.

МатросНаЗебре, спасибо за помощь с формулой.
 
Подскажите, если можно в продолжение темы, как установить поиск по любому знаку (символ, цифра, текст) в ячейке столбца W, а не только "+".
Пробовал подставлять в формулу разные обозначения любого символа (? , * , <>"") вместо "+" но результата не достиг.
...;ИНДЕКС($W$1:$W$21;ЯЧЕЙКА("строка"))="+")
Помогите пожалуйста.
 
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rInput As Range
    On Error Resume Next
    Set rInput = Intersect(Target, Range("H10:L21"))
    On Error GoTo 0
    If rInput Is Nothing Then Exit Sub
    
    Dim ci As Range
    For Each ci In rInput.Cells
        ChangeCell ci
    Next
End Sub

Private Sub ChangeCell(inputCell As Range)
    Dim rg As Range, rw As Range
    Set rw = Range("W" & inputCell.Row)
    Set rg = Range("G" & inputCell.Row).MergeArea.Cells(1, 1)
    
    Dim targetRow As Long
    If Not IsEmpty(rw.Value) Then                          ' <----------------------------- ТУТ.
        targetRow = WorksheetFunction.Match(rg.Value & "+", Range("R1:R8"), 0)
    Else
        targetRow = WorksheetFunction.Match(rg.Value, Range("R1:R8"), 0)
    End If
    
    Range("N3:R8").Interior.Color = RGB(255, 255, 153)
    Range("N1:R8").Rows(targetRow).Interior.Color = RGB(255, 128, 128)
End Sub
 
Код
=И(ИЛИ(И(ЯЧЕЙКА("строка")>=17;ЯЧЕЙКА("строка")<=22));ИНДЕКС($W$1:$W$21;ЯЧЕЙКА("строка"))<>"")
 
МатросНаЗебре, Спасибо
Страницы: 1
Читают тему
Наверх