Использование частичного совпадения с фильтром и VSTACK

Использование частичного совпадения с фильтром и VSTACK

С помощью некоторых рекомендаций этого сайта мне удалось извлечь следующую формулу из нескольких рабочих листов:

=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и любое количество символов. В этом варианте использования используется location ABC *и проверяется любое location, начинающееся с ABCи заканчивающееся любым назначенным job/positionв том же location из массива δ.
  • Если совпадение найдено, то мы можем использовать либо ISNUMBER()для возврата TRUE, либо 1-ISNA()также можно использовать , который делает то же самое, т.е. сначала ISNA()возвращает TRUEошибку, #N/Aзатем вычитается из результата, TRUEчто то же самое, что и сISNUMBER()
  • Наконец, обертывание в FILTER()функцию для извлечения там, где есть TRUE.

Примечания:

• Excel имеет3 подстановочных знакаможно использовать в ваших формулах:

  1. Звездочка( *) --> Ноль или более символов.
  2. Вопросительный знак( ?) --> любой один символ.
  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 и других.

Примечание.

решение3

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

=ФИЛЬТР(VSTACK(FRR:SOD!G3:M200),ЛЕВЫЙ(VSTACK(FRR:SOD!K3:K200),3)="ABC")

Спасибо за вашу помощь!

Связанный контент