Со вчерашнего дня я размышлял над этим решением (исключительно на основе формул).
Я нашел решение, которое сначала позволяет создавать настраиваемые фильтры в списках, а затем проверять данные.вниз список выбирается из отфильтрованного списка.
(При необходимости вы можете просто скрыть эти вспомогательные столбцы отфильтрованного списка, поскольку, вероятно, у пользователя нет причин их видеть.)
См.ниже пример набора данных, который я создал, и несколько примеров фильтров.
Исходный список находится в столбце A
, тогда столбцы C
и E
используют формулы для фильтрации списка слева.из этого, основываясь на критериях (желтые ячейки).
Вот формула массива у меня в ячейке C2
:
= IFERROR(INDEX($A$2:$A$8,SMALL(IF(LEFT($A$2:$A$8,LEN($B$2))=$B$2,
ROW($A$2:$A$8)-ROW($A$2)+1),ROW($A2)-ROW($A$2)+1)),"(no match)")
А вот формула массива у меня есть вячейка E2
:
= IFERROR(INDEX($C$2:$C$8,SMALL(IF(LEN($C$2:$C$8)=IF($D$2=0,LEN($C$2:$C$8),$D$2),
ROW($C$2:$C$8)-ROW($C$2)+1),ROW($C2)-ROW($C$2)+1)),"(no match)")
Я перетащил эти ячейки в строку 8.
Обратите внимание, что это формулы массива, поэтому вы должны нажать Ctrl + Shift + Введите на клавиатуре вместо простого нажатия Введите после ввода этой формулы.
Теперь столбец E
содержит исходный список, но сэти два фильтра применяются.Конечно, вы можете добавить столько дополнительных фильтров, сколько пожелаете.Один недостаток состоит в том, что эти формулы довольно длинные и должны создаваться по мере необходимости, но формулы обычно следуют той же структуре, если сравнивать две вышеупомянутые формулы.
Настройка отбрасывания проверки данныхВ раскрывающемся списке, я использовал эту формулу:
= OFFSET($E$2,0,0,IFERROR(MATCH("(no match)",$E$2:$E$8,0),ROW($E$8)-ROW($E$2)+2)-1,1)
Эта формула работает, возвращая список в столбце E
, но возвращает список только до (и не включая) первого экземпляра где (no match)
происходит.
См. Ниже, у меня есть это в ячейке G2
в моем примере электронной таблицы.
Примечание:OFFSET
является изменчивым, и его, как правило, следует избегать, но, к сожалению, OFFSET
- единственный вариант (который мне известен), который позволяет вам использовать раскрывающиеся списки переменной длины при проверке данных.
С помощью этой настройки вы можете изменить поля в ячейке B2
и D2
, что в конечном итоге отфильтрует данные в исходном списке, и этот фильтр будет отражен в раскрывающемся списке.
См.немногие бывшиедостаточно ниже этой работы.Обратите внимание, что раскрывающийся список изменяется в зависимости от результатов списков на основе фильтров.
Фильтры не применяются
Применены оба фильтра
Применен только первый фильтр
Применен только второй фильтр