У меня есть большой основной список предметов и таблица, которая используется для обобщения этой информации. Каждое задание имеет «Номер цитаты» и флаг, который определяет, следует ли его показывать в данной таблице (флаги: 0%, 20%, 50%, 80%, 100%). Мастер содержит всю информацию, связанную с заданием, в то время как таблицы отчетов должны отфильтровывать конкретные задания с указанным флагом.

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

Я пытался использовать различные функции в ячейке, такие как IndexMatch (возвращает только первое значение, как и должно), если операторы, но я не могу найти способ сделать это. Есть ли способ сделать это изначально в Excel без VBA, или это мой лучший выбор? Лично я предпочел бы сделать это без VBA, поскольку с ним намного проще работать, но если это действительно необходимо, я уже понял, как это сделать.

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

1 ответ1

0

Да, это может быть сделано без использования VBA. Это требует использования функций массива, хотя.

Следующее решение будет работать при условии, что номера кавычек не содержат нечисловых символов.

Скриншот рабочего листа

Массив введите (Ctrl+Shift+Enter) следующую формулу в B3 и скопируйте-вставьте / заполните в оставшуюся часть столбца таблицы (не забудьте удалить { и }):

{=SMALL(IF($G$2:$G$10=$B$1,$F$2:$F$10,FALSE),ROW()-ROW(B$2))}

Обратите внимание, что хотя я использовал B1 для хранения значения флага, это может быть жестко запрограммировано по-разному для каждой из сводных таблиц.

Предостережение:

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

Чтобы обойти это, можно добавить формулу после конца каждой сводной таблицы, чтобы обнаружить эту возможность и предупредить пользователя об увеличении количества строк:

Скриншот рабочего листа

Введите следующую формулу в B8:

=IF(ISERROR(SUM(B3:B7)),"All OK","Add More Rows")

Чтобы этот обходной путь работал, ошибка, возникающая в функции SMALL() когда больше не найдено подходящих кавычек, не может быть подавлена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .