Я пытаюсь сопоставить две таблицы, как показано ниже.
Таблица 1:
Название статьи | Идентификационный номер |
---|---|
Университет B: генетические мутации в раковых клетках | 1 |
Терапия первой линии при раке легких от Университета А | 2 |
Случаи рака легких в больнице университета B | 3 |
Терапия первой линии при раке молочной железы (Институт C) | 4 |
Таблица 2:
Название университета | Ключевое слово |
---|---|
Университет АВС | Университет Б |
Университет Британской Колумбии | Университет А |
Университет CDE | Институт С |
Я хочу добавить столбец «Название университета» в таблицу 1 на основе поиска по ключевым словам в заголовке статьи. Учитывая, что ключевые слова очень похожи и могут быть найдены в разных местах в заголовке статьи, Vlookup не может успешно найти совпадение.
ВПР (даже с опцией [true], т.е. не для точного совпадения) не может правильно найти совпадение.
Можно ли использовать какую-либо другую формулу или бесплатные инструменты?
Большое спасибо
Решение предоставлено JvdV Сэр -- Использование функции O365
и Excel 2021
-- FILTER()
• Формула, используемая в ячейке С3
=FILTER(E$3:E$5,ISNUMBER(FIND(F$3:F$5,A3)),"No Match")
Вы также можете попробовать эту формулу, как показано на изображении ниже, работает во всех версиях Excel.
Формула, используемая в ячейке С3
=LOOKUP(9^9,SEARCH(Table2[Keyword],[@[Article Title]]),Table2[University Name])
@ VBasic2008 Сэр, если мы используем форму «Столбец поиска, отсортированный по возрастанию» для ПРОСМОТРА, 9 ^ 9, 99 ^ 99, 1E + 308 или другое очень большое число будет соответствовать самому последнему элементу в списке при условии, что поиск ключевое слово, которое возвращает числовые данные. Данные в вашем столбце поиска не нужно сортировать, потому что 9^9 будет больше любого возможного значения.
@ VBasic2008 VBasic2008 Сэр, функция ПРОСМОТР имеет уникальную способность игнорировать данные, тип которых отличается от значения поиска, а значения ошибок определенно относятся к другому типу данных. Таким образом, 9 ^ 9 позволит вам найти последнее совпадающее значение, когда у вас есть один или несколько критериев, которые также должны быть удовлетворены. Например, предположим, что вы хотите найти значение в столбце E, когда столбец B «красный», а столбец C больше 10. Тогда вам нужно использовать =LOOKUP(99^99,1/((B2:B1000 = "red")*(C2:C1000>10)),E2:E1000)
@VBasic2008 VBasic2008 Сэр, знаменатель в 1/((B2:B1000 = "red")*(C2:C1000>10)) преобразуется в массив из 1 и 0. Поскольку 1/0 является значением ошибки, выражение массива возвращает массив 1 и DIV/0! значения ошибок. ПРОСМОТР игнорирует эти ошибочные значения и, ища очень большое число (которое он никогда не найдет), ПРОСМОТР находит последнюю строку, в которой удовлетворяются оба критерия, и возвращает соответствующее значение из столбца E.
@VBasic2008 VBasic2008 Сэр, бонусная функция: формулы ПРОСМОТРА, подобные этой, не нужно вводить в виде массива. 9 ^ 9 или 99 ^ 99 также могут быть полезны в формулах ИНДЕКС и ПОИСКПОЗ, где вы ищете индекс на основе номера строки, который может быть довольно большим. Предположим, вы хотите использовать формулу ИНДЕКС и ПОИСКПОЗ для предыдущей задачи. Вы можете ввести массив: =INDEX(E2:E1000,MATCH(99^99,IF(((B2:B1000 = "red")*(C2:C1000>10))=1,ROW(B2:B1000)-ROW(B2)+1,""),1))
@ VBasic2008 Сэр, вы гораздо более опытны и осведомлены, чем я, до сих пор не знаю, почему вы спросили, я учусь, следя за вашими сообщениями и другими экспертами, но этот работает, я использовал много раз и добился успеха. !
Я уже говорил вам, что я слаб в формулах Excel. В VBA я могу многое. Это было очень поучительно для меня, так как я часто задавался вопросом о «трюках» с LOOKUP
. Вы еще раз доказали, что являетесь мастером формул Excel. Продолжайте хорошую работу.
@VBasic2008 VBasic2008 Сэр, большое спасибо за ваши добрые слова, однако я не думаю, что вы слабы, и сэр, вы очень скромны, я слежу за всеми вашими сообщениями в VBA Solutions, то, как вы обрабатываете массивы, просто феноменально! Спасибо, сэр, еще раз за все, что вы делитесь знаниями!
Красивый. Что означает
9^9
?