Есть ли для имитации функции фильтра в Excel с формулой? - PullRequest
0 голосов
/ 17 июня 2019

Имена вниз по строкам. Даты по столбцам. У каждого учащегося либо 1, «х», либо значение на указанную дату отсутствует.

У меня есть выпадающий список со всеми датами в моей таблице (столбцы).

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

По сути, это автоматически заполняющаяся функция динамического фильтра.

Я думал о нескольких формулах (индексное соответствие, индексное соответствие, маленькие строки) и даже сводных таблицах, но не повезло. Основная проблема заключается в том, чтобы сделать дату (адрес столбца) динамической в ​​формуле.

=IFERROR(SMALL(IF((GANTT!$FT$14:$FT$1003=1),GANTT!$A$14:$A$1003,""),ROW()-16),"")

В приведенной выше формуле FT соответствует дате Sunday, 7 Oct 2018 и выдает все правильные имена для статического столбца FT. Как мне сделать переменную FT и связать ее с выпадающим списком? Могу ли я использовать адрес и косвенный каким-либо образом?

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

Извините, я не могу понять, как разместить свою таблицу данных образца.

NAME | DATE1 | DATE2 | DATE3
JON  |       |     1 |     4
Jane |       |     0 |     1
BILL |     1 |       |     2

1 Ответ

0 голосов
/ 17 июня 2019

Предположение - Ваши данные выложены в диапазоне B2: E5 - Целевая дата выбора ячейки H2 - Результаты в столбце J

Шаг 1 - Определите целевой столбец

Собирается использовать Match, чтобы определить, какой столбец вы хотите

MATCH(H2,A2:E2,0)

Шаг 2 - В столбце найдите строки с 1 в них

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

AGGREGATE(14,6,row(B3:B5)/(index(B3:E5,0,MATCH(H2,A2:E2,0))=1),A1)

Шаг 3 - вытащить имена из соответствующих строк

Используйте INDEX для ссылки на ваш список имен, введите в него номера строк, которые вас интересуют.

INDEX(B:B,AGGREGATE(15,6,ROW($B$3:$B$5)/(INDEX($B$3:$E$5,0,MATCH($H$2,$B$2:$E$2,0))=1),ROW(A1)))

Если вы заключите это в функцию IFERROR, когда у вас заканчиваются совпадающие имена, вы можете отобразить «» вместо сообщения об ошибке. Вы можете поместить следующую формулу в J2 и скопировать вниз:

=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($B$3:$B$5)/(INDEX($B$3:$E$5,0,MATCH($H$2,$B$2:$E$2,0))=1),ROW(A1))),"")

POC

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

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