Выделите ячейку, если активные ячейки (две или более строки) находятся в одном столбце - PullRequest
0 голосов
/ 18 февраля 2019

Я знаю, как выделить ячейку с условным форматированием для одной активной строки

=CELL("address")=CELL("address",C$5)

Как это сделать, но с двумя или более строками (5, 7, 9, 11)

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Выделите ячейки в указанной строке

  • В редакторе Visual Basic ( Alt + F11 ) скопируйте этот код в окно листа (двойной щелчок) на рабочем листе, куда вы хотитечтобы запустить этот код.
  • Настройте значения (cRng, cRange, cRow cColor) в разделе констант в соответствии со своими потребностями.

Код

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Const cRng As String = "C3:AM3"     ' Target Range
    Const cRange As String = "C5:AM27"  ' Source Range
    Const cRow As Long = 3              ' Target Row Number
    Const cColor As Long = 3            ' Color Index e.g. 3 is Red.

    Dim rng As Range  ' Intersect Range
    Dim i As Long     ' Rows Counter
    Dim k As Long     ' Areas Counter

    ' Create a reference to Intersect Range.
    Set rng = Intersect(Target, Range(cRange))

    ' Remove color in all cells of Target Range.
    Range(cRng).Interior.ColorIndex = xlNone

    If Not rng Is Nothing Then
        ' Loop through Areas of Intersect Range.
        For k = 1 To rng.Areas.Count
            ' Loop through rows of current Area of Intersect Range.
            For i = 1 To rng.Areas(k).Rows.Count
                ' In current Area of Intersect Range
                With rng.Areas(k)
                    ' Check if current row number of current area of Intersect
                    ' range is odd.
                    If .Rows(i).Row Mod 2 = 1 Then
                        ' Apply color to all cells in row cRow of Worksheet
                        ' whose columns are the same as those of Current Area
                        ' of Intersect Range.
                        Cells(cRow, .Column).Resize(, .Columns.Count) _
                            .Interior.ColorIndex = cColor
                        Exit For
                    End If
                End With
            Next ' Row of current Area of Intersect Range.
        Next ' Area of Intersect Range.
    End If

End Sub
0 голосов
/ 18 февраля 2019

В качестве условного форматирования следует использовать И из трех условий.

=and(row()>=5, row()<=11, mod(row(), 2)=1)

В более поздних версиях Excel можно использовать isodd(row()) вместо mod(row(), 2)=1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...