Условное форматирование для определенной группы значений / строк на основе значений ячеек

У меня есть таблица данных, которая разделена, скажем, «блоками» строк. Как вы можете видеть на изображении, начиная с столбца D (A1) есть некоторые значения в первой строке, затем 5 строк пустые, а затем снова значения 7-й строки и так далее … это то, что я называю блоком строк , всегда в интервале sam.

Пример

Я хотел добиться следующего:

  1. Столбец I (D1) должен быть моим столбцом «фильтра», в котором я хочу выбрать несколько значений, одно или несколько не имеют значения.
  2. Когда я выбрал несколько «значений», данные будут отфильтрованы, как обычно в таблицах Excel, но я хотел иметь возможность всегда оставлять видимым тот блок строк, который соответствует, не только строку или две, но и весь блок, даже если 90% будут пустыми ячейками или нет. Остальные можно удалить или скрыть, но с возможностью вернуть их при выборе или отмене выбора.
  3. Важно всегда сохранять блок из этих 6 строк, или может быть два или три блока, если значения включены в другие блоки. И когда в других блоках нет совпадений, это должно быть «скрыто»
  4. Я пробовал использовать вспомогательные столбцы, такие как столбцы A, B и C, но безуспешно, пытался как-то их объединить, но безуспешно.
  5. Конечно, я добавил цвет, чтобы их пометить, но можно и без него, важно, чтобы фильтр был на 100% правильным.

Помощник1:

=MOD(SUMPRODUCT(($D$5:$D5<>$D$4:$D4)*1);2)=0

Вот что сейчас в CF в виде формулы:

=$I5=$I$3

Я не разбираюсь в VBA, если это вариант, но с другой стороны я видел, что это можно сделать и с помощью CF …

1 ответ
1

Я счел полезным создать индекс для «группы» из 6 строк по следующей формуле:

=ROUNDUP((ROW()-1)/6,0)

введите описание изображения здесь

Я уверен, что есть несколько способов сделать следующую часть, но это тот, который пришел мне в голову в первую очередь.

Подсчитайте строки, которые имеют ту же группу, что и текущая строка, и где значения в столбце D могут быть найдены в списке фильтров в столбце J. Поскольку список фильтров может содержать более одной ячейки, это вернет массив длина такая же, как у списка фильтров, и где каждый элемент является целым числом, представляющим количество элементов фильтра в группе. Итак, если группа содержала 0528 дважды и 0342 один раз, и фильтр должен был найти оба 0528 и 0342, то COUNTIF вернется {2,1}:

Я использовал TRANSPOSE здесь, чтобы проиллюстрировать результаты каждой строки. Эта формула находится в столбце G:

=TRANSPOSE(COUNTIFS($E$2:$E$19,$E2,$D$2:$D$19,$J$1:$J$2)

введите описание изображения здесь

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

=SUM(COUNTIFS($E$2:$E$19,$E2,$D$2:$D$19,$H$1:$H$2))>0

Обратите внимание, что TRANSPOSE на самом деле не нужно, поэтому я удалил его.

введите описание изображения здесь

Возможно, мы могли бы встроить групповой расчет в формулу фильтра, но я думаю, что было бы лучше оставить его там, где он есть, поскольку он может быть полезен для других расчетов.

  • О чувак! Это было в основном то, что я хотел. Это открывает мне новый способ достижения моих целей: использование условного форматирования, макрос записи и некоторого обходного пути приведет меня туда, куда я хотел. Я знал, что это сложно, но спасибо за ваш большой вклад !!!

    — Мирза
    4 часа назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *