Функция Excel ФИЛЬТР(), включающая диапазон значений

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

Я достигаю этого с помощью ручного процесса объединения функций FILTER() вместе, например:

=VSTACK(
IF(C2 = "","",FILTER(Meals!C:C,Meals!A:A=C2,"")),
IF(C3 = "","",FILTER(Meals!C:C,Meals!A:A=C3,""))...
)

Это не слишком гибко, и если у меня более 100 строк, формула слишком велика для Excel и ломается... есть ли лучший способ сделать это? FILTER(), похоже, не выполняет несколько поисков или диапазон поиска.

Есть ли способ заставить FILTER() принимать несколько включений (или диапазон) или другую формулу, которую мне следует использовать?

Что-то вроде =FILTER(Meals!C:C,is number(xmatch(Meals!A:A,C2:C3)),"")

P.b 22.06.2024 13:56
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
1
85
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

С помощью этой формулы:

=TOCOL(TEXTSPLIT(TEXTJOIN("|",TRUE,BYROW(A11:A12,LAMBDA(xx,TEXTJOIN("|",TRUE,IF(xx=A1:A9,B1:B9,""))))),"|",,TRUE))

результат

Ответ принят как подходящий

Возможно, для простоты и читабельности я бы использовал с помощью функции COUNTIF() следующее:


=FILTER(Foodtbl[Food],COUNTIF(List[Selected list of food],Foodtbl[Meal]),"")

Кроме того, вместо использования диапазонов я преобразую диапазоны в Structured References, то есть Tables, чтобы всякий раз, когда происходит изменение исходных данных, это напрямую влияло на обновляемые формулы.

Исходная таблица называется Foodtbl, а список — List.


Еще один вариант: ISNA() + XMATCH().

=FILTER(Foodtbl[Food],1-ISNA(XMATCH(Foodtbl[Meal],List[Selected list of food])))

Еще один альтернативный способ — использование MMULT() :

=FILTER(Foodtbl[Food],
 MMULT(N(Foodtbl[Meal]=TOROW(List[Selected list of food])),{1;1}))

Обрабатывать повторяющиеся элементы; TOCOL используется для исключения строк с NA() из повторяющихся элементов.

Параметрами могут быть диапазоны или структурированные ссылки (Table[Meal], Table[Food]).

=LAMBDA(meal, food, selected_meal,
    LET(
        matching_food, FILTER(food, COUNTIF(selected_meal, meal), NA()),
        result, TOCOL(
            IF(ISNA(matching_food), "none", SORT(UNIQUE(matching_food))),
            3
        ),
        result
    )
)(A2:A200, B2:B200, D2:D10)

Другие вопросы по теме