С помощью некоторых рекомендаций этого сайта мне удалось извлечь следующую формулу из нескольких рабочих листов:
=FILTER(VSTACK(FRR:SOD!G3:M200),
(VSTACK(FRR:SOD!K3:K200)<>"")*
(VSTACK(FRR:SOD!K3:K200)="ABC XXXX"))
Есть ли способ отфильтровать частичное совпадение в "ABC XXXX"? Представьте себе ABC как местоположение, а XXXX как работу/должность в этом местоположении. Я хотел бы иметь возможность перетащить всех, назначенных в ABC, на новый рабочий лист, а затем отфильтровать по работе/должности. Это возможно?
решение1
Вот один из способов сделать это:
=LET(
α, VSTACK(FRR:SOD!G3:M200),
δ, INDEX(α,,5),
FILTER(α, (δ<>"")*(1-ISNA(XMATCH("ABC *",δ,2))),"Not Found"))
- Использование
LET()
функции помогает определять переменные и облегчает чтение без повторения одних и тех же формул. α
переменная определяется как использованиеVSTACK()
которой добавляет данные из нескольких листов в один, состоящий из диапазонаG3:M200
из листовFRR
иSOD
δ
переменная определяется как использующаяINDEX()
функцию для извлечения5th
из массива, возвращаемого вα
- Использование
XMATCH()
с подстановочным операторомAsterix
* что означаетZero
и любое количество символов. В этом варианте использования используется locationABC *
и проверяется любое location, начинающееся сABC
и заканчивающееся любым назначеннымjob/position
в том же location из массиваδ
. - Если совпадение найдено, то мы можем использовать либо
ISNUMBER()
для возвратаTRUE
, либо1-ISNA()
также можно использовать , который делает то же самое, т.е. сначалаISNA()
возвращаетTRUE
ошибку,#N/A
затем вычитается из результата,TRUE
что то же самое, что и сISNUMBER()
- Наконец, обертывание в
FILTER()
функцию для извлечения там, где естьTRUE
.
Примечания:
• Excel имеет3 подстановочных знакаможно использовать в ваших формулах:
- Звездочка(
*
) --> Ноль или более символов. - Вопросительный знак(
?
) --> любой один символ. - Тильда(
~
) --> экранирование для буквенных символов (~*
), буквальных вопросительных знаков (~?
) или буквальных тильд (~~
).
решение2
В случае частичного совпадения должно быть много комбинаций, ниже приведена одна, которой я хотел бы с вами поделиться.
=FILTER(VSTACK(FRR:SOD!G3:M200),
(VSTACK(FRR:SOD!K3:K200<>"")*
((ISNUMBER(SEARCH("NEW*", VSTACK(FRR:SOD!K3:K200)))) +
(ISNUMBER(SEARCH("*MANAGER", VSTACK(FRR:SOD!K3:K200)))) > 0))
- Теперь позвольте мне объяснить про ((ISNUMBER(SEARCH("NEW*"
- Здесь в НОВОМ*,, * - это символ Wild Card, который предполагает больше символов One.
- Это могут быть такие места, как Нью-Дели, Нью-Йорк, Нью-Джерси и другие.
- Другой вариант — (ISNUMBER(SEARCH("*MANAGER" , где *MANAGER может подразумевать EDP MANAGER, SALES MANAGER и других.
Примечание.
Вы можете использовать другой символ Wild Card. ?по мере необходимости.
Кроме тогоПроверьте эту ссылку .
решение3
Я ценю вклад каждого, хотя некоторые из них немного сложны, поскольку я все еще учусь понемногу. Эта формула с другого форума сработала именно так, как мне было нужно, и мне было легко ее понять:
=ФИЛЬТР(VSTACK(FRR:SOD!G3:M200),ЛЕВЫЙ(VSTACK(FRR:SOD!K3:K200),3)="ABC")
Спасибо за вашу помощь!