Функция фильтра в списке

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

В настоящее время список содержит 59 значений, и я пытаюсь сократить время, необходимое для этого, и создать более простой способ поиска на основе уровней приоритета. У меня есть другие критерии, по которым он ищет (диапазоны дат, привязанные к именам). Я не могу манипулировать данными в Таблице 1 по юридическим причинам.

Прямо сейчас я использую эту формулу фильтра:

=FILTER(Table1[Names],ISNUMBER(SEARCH(I1,Table1[Names])))

Я не уверен, является ли функция фильтра лучшим инструментом или есть лучшее предложение, мое использование VBA очень ограничено.

Это формула, близкая к той, которую я пытаюсь получить, работая над набором данных:

=FILTER(Table1[Names],ISNUMBER(SEARCH(Table2[Last],Table1[Names]))*(Table2[Priority]=I1))

Итак, если бы я хотел ввести «Высокий» в I1, он бы вернулся как таковой:

Таблица1:

Имена Ванда Хайден Олин Валентайн Гарриет Гонсалес Вильфредо Шах Дешон Леви Таннер Авила Кенет Хоу Чанг Хейс Гленда Карденас Лаверн Бриггс Джона Поттер Лайл Грегори Майкл Рейес Эл Хантер Норманд Бауэрс Брок Патрик Роял Арельяно Эрнестина Генри Арманд Ариас

Таблица2:

Первый Последний Приоритет Брок Патрик Высокий Таннер Авила Низкий Вильфредо Шах Высокий Чанг Хейс Высокий Олин Валентина Низкий Лайл Грегори Высокий Дешон Леви Низкий

Выход на основе высокого уровня (ячейка I1)

Высокий Вильфредо Шах Чанг Хейс Лайл Грегори Брок Патрик

Пожалуйста, измените, например, Keneth Howe на Keneth Patrick и проверьте решение, которое вы приняли.

rotabor 09.08.2024 23:13

@rotabor, как я объяснил в принятом мной решении, он работает в тандеме с другими поисками. Это исключает необходимость искать первым и последним, поэтому в своем сообщении я указал фамилию/уровень приоритета.

Sammi23 09.08.2024 23:31
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
2
51
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Другая формула

=FILTER(
  Table1[Names],
  BYROW(
    TEXTAFTER(Table1[Names]," ",-1)=TRANSPOSE(FILTER(Table2[Last],Table2[Priority]=I1,"")),
    LAMBDA(row,OR(row))
  )
)
Ответ принят как подходящий

В вашей формуле нет ничего плохого, но в функции SEARCH() find_text и Within_text оба вертикальны, один или другой должен быть либо вертикальным, либо горизонтальным, еще одна причина уже была упомянута @ScottCraner Sir:


• Один из вариантов использования BYROW():

=FILTER(Table1[Names],
 BYROW(1-ISERR(SEARCH(TOROW(FILTER(Table2[Last],I1=Table2[Priority],"")),Table1[Names])),LAMBDA(α,OR(α))))

• Или без использования вспомогательной функции LAMBDA():

=CHOOSEROWS(Table1[Names],
SORT(XMATCH("*"&FILTER(Table2[Last],Table2[Priority]=I1),
Table1[Names],2)))

Или,

=FILTER(Table1[Names],
 IFNA(SIGN(XLOOKUP(Table1[Names],
 Table2[First]&" "&Table2[Last],Table2[Priority])=I1),0))

Есть много способов сделать это, и поскольку вы специально ищете Last_Names в столбце Names, добавьте еще одну альтернативу:

=FILTER(Table1[Names],
 ISNUMBER(XMATCH(TEXTAFTER(Table1[Names]," ",-1),
 FILTER(Table2[Last],Table2[Priority]=I1,""))))

=FILTER(Table1[Names],1-ISNA(XMATCH(Table1[Names],FILTER(Table2[First]&" "&Table2[Last],Table2[Priority]=I1))))

Обратите внимание, что в ваших данных не используются отчества. Это хлопотно?

С аргументом транспонированного массива SEARCH выдаст результат в нескольких столбцах. Затем их можно объединить с MMULT. Просто даю еще один подход для возможного использования в будущем.

=LET(
    last_to_match, FILTER(Table2[Last], Table2[Priority] = $I$2),
    FILTER(
        Table1,
        MMULT(
            --ISNUMBER(
                SEARCH(TRANSPOSE(last_to_match), Table1[Names])
            ),
            SEQUENCE(ROWS(last_to_match))
        )
    )
)

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