Выделите "истинные" значения матрицы

У меня есть таблица в таблице Excel, где х указывает на соответствие продукта и функции. Это очень большая сетка, и ее трудно читать, поэтому, чтобы улучшить отображение, я бы хотел выделить строку для соответствующих продуктов при выборе функции. И когда я выбираю функцию, я бы хотел выделить строку для соответствующих функций.

Если моя таблица выглядит так:

                 Feature 1|Feature 2|Feature 3|
       Product 1|    x    |    x    |         |
       Product 2|    x    |         |    x    |
       Product 3|         |    x    |         |  

В приведенном выше примере, например, при выборе функции 2 будут выделены строки для продукта 1 и продукта 3. При выборе продукта 1 будут выделены функция 1 и функция 2.

Это может быть выполнено с помощью условного форматирования, или требуется VBA. Я пытался использовать ссылки =CELL("адрес"), но я не могу понять, как заставить его применяться ко всем ИСТИННЫМ продуктам, когда я выбираю функцию (или ИСТИННУЮ функцию, когда я выбираю продукт).

Мой план состоял бы в том, чтобы сделать взаимодействие динамическим со следующим, если я смогу выяснить, как заставить это работать:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Application.Calculate
End Sub

1 ответ

Решение
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub

Dim rng As Range, cell As Range

Me.Cells.Interior.Color = xlNone

If Not Intersect(Range("1:1"), Target) Is Nothing Then
    Set rng = Intersect(Me.UsedRange, Columns(Target.Column))
    If Not rng Is Nothing Then
        For Each cell In rng
            If cell.Value = "x" Then Me.Cells(cell.Row, 1).Interior.ColorIndex = 8
        Next cell
    End If
ElseIf Not Intersect(Range("A:A"), Target) Is Nothing Then
    Set rng = Intersect(Me.UsedRange, Rows(Target.Row))
    If Not rng Is Nothing Then
        For Each cell In rng
            If cell.Value = "x" Then Me.Cells(1, cell.Column).Interior.ColorIndex = 8
        Next cell
    End If
Else
    Exit Sub
End If

End Sub
Другие вопросы по тегам