Выделите ячейки с значениями, отличными от представленных в столбце - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно пройти таблицу (X по Y), где каждый столбец (X) должен иметь одинаковое значение (строку) и хотел бы, чтобы ячейка была выделена, если это не одно и то же значение. Я застрял в построении метода сравнения, потому что хотел бы, чтобы он был динамичным. Я хотел бы сначала определить, какое значение больше всего присутствует в столбце, и определить, с чем нужно сравнивать все остальное, и выделить ячейку, которая не равна этому значению.

Пример (6x5 таблица) -

A 3 4 CMR

A 3 4 OMR

8 3 TOMF

8 3 4 OMG

A 3 TOYK

В первом столбце A является наиболее распространенным значением, поэтому (8s) подсвечиваются, во втором столбце ничего не подсвечивается, в третьем оба (T) подсвечиваются, четвертый столбец (C), пятая колонка (Y) и шестая колонка (F), (G) и (K) выделены.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Я могу предложить обходной путь. Не уверен, что это лучший способ.

enter image description here

Шаг 1. Создайте таблицу count, которая в основном дает счетчик значения вколонка. Пример: для ячейки F4 используйте формулу = COUNTIF ($ B $ 4: $ B $ 8, B4)

Шаг 2. Создайте строку с максимальными значениями для каждого столбца. Пример: Ячейка F11 = MAX (F4: F8)

Шаг 3. Для каждой ячейки задайте условие условного форматирования, которое, если значение в таблице счетчиков не соответствует максимальному значению, раскрасит его. Пример: для ячейки B4 перейдите в условное форматирование -> новое правило -> используйте формулу и напишите эту формулу = F4 <> F $ 11. Затем скопируйте и вставьте формат во все остальные ячейки.

Примечание: это не будет работать, если несколько значений в столбце имеют одинаковое максимальное число.

0 голосов
/ 03 октября 2019

Вот решение VBA, я прокомментировал код, чтобы вы могли понять

    Sub HighlightNonFrequentInColumn()

    Dim rng As Range
    Dim col As Range
    Dim cell As Range
    Dim myVal As String
    Dim colRng As String

    Set rng = Selection '<<change range as required

    For Each col In rng.Columns
        'determine the most frequent value
        colRng = col.Address
        On Error Resume Next
        myVal = Application.Evaluate("INDEX(" & colRng & ",MODE(IF(" & colRng & "<>"""",MATCH(" & colRng & "," & colRng & ",0))))")
        If Application.countblanks(col) > Application.CountIf(col, myVal) Then myVal = "" '<<if blanks are most frequent
        'highlight all cells not equals to most frequent value
        For Each cell In col.Cells
            If Not cell = myVal Then cell.Interior.Color = vbYellow '<<change colour as desired
        Next
    Next

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