У меня есть два набора данных (два листа в одной книге), где мне нужно найти записи из одного в другом. Оба набора отформатированы в виде таблицы, и я использую комбинацию INDEX(MATCH()) для сопоставления записей. Если совпадение найдено, значения из одного из полей в наборе данных1 должны появиться в добавленном столбце набора данных2. Таким образом, я знаю, что есть совпадение, меня не волнует возвращаемое значение.

К сожалению, у меня нет uniqueID для сопоставления, поэтому я должен использовать комбинацию из двух полей в каждой из таблиц, чтобы попытаться создать совпадения. Поля: [@Name] и [@Surname] , что на хорватском языке не совсем идеально, поскольку имя Adis Terzic явно не будет соответствовать Adis Terzić.

Эта проблема

  • Добавленный столбец (поле) в Dataset2 не показывает никаких значений, возвращаемых из Dataset1, а показывает только ошибку #VALUE .

Есть идеи, что я делаю не так?

Мой синтаксис выглядит следующим образом:

=INDEX(Table1[@Field4],MATCH(Table1[@Name trim]&Table1[Surname trim], Table2[Name]&Table2[Last name], 0)) 

Вот пример рабочей книги (Google Drive).

  • Dataset1 (Таблица1) имеет около 28000 строк и 16 столбцов;
  • Набор данных 2 (Таблица 2) имеет около 24000 строк и 7 столбцов;

Спасибо заранее!

2 ответа2

1

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

Я бы добавил вспомогательный столбец, чтобы объединить ваши имена. Поскольку вы используете таблицу, это может быть просто столбец с названием "NameLookup" =([Fname] & "" & [Lname])

Тогда ваш индекс совпадения будет выглядеть

=IFERROR(INDEX(Table1[@Field4],MATCH(Table1[NameLookup],Table2[NameLookup],0),"Not Found")

У меня на самом деле есть похожий лист, где мне нужно сравнить два списка имен. Я сталкиваюсь с проблемой работы со средними инициалами и суффиксами (такими как jr, sr, III и т.д.). Не говоря уже о лишних пробелах ... Вот снимок того, как я разбил его с помощью вспомогательных столбцов: Вот как все это работает:"Проверить полное имя" - это COUNTIF, сравнивающий полное имя со списком на втором листе. Если он найдет совпадение, я в порядке. «Имя, Отчество, Фамилия, без суффикса» - это все вариации формулы TRIM для разделения имени.

Имя:=LEFT([@NAME],SEARCH(" ",[@NAME]))

Посередине :=IFERROR(MID([@NAME],SEARCH(" ",[@NAME],1)+1,SEARCH(" ",[@NAME],SEARCH(" ",[@NAME],1)+1)-SEARCH(" ",[@NAME],1)),"")

Фамилия:=IFERROR(RIGHT([NAME],LEN([NAME])-SEARCH(" ",[NAME],SEARCH(" ",[NAME],SEARCH(" ",[NAME])+1))),RIGHT([@NAME],LEN([@NAME])-FIND(" ",[@NAME],1)))

Без суффикса:=IFERROR(LEFT([@[Last Name]],FIND(" ",[@[Last Name]])-1),"")

Наилучшее предположение - это столбец, который я использую, чтобы найти точное совпадение с именем

=IFERROR(IF([@[Check Full Name]]=0,INDEX(Marketing[NAME],MATCH([@DrillFirstNoSfx],Marketing[MarketFirstNoSfx],0)),""), "Not Found")

Я использую условное форматирование в ячейке NAME, чтобы легко определить, есть ли совпадение или нет. Черный текст (Отметьте Полное имя> 0), Красный текст означает, что совпадения нет вообще, Желтый текст означает, что есть близкое совпадение (значение в столбце Best Guess).

Надеюсь, что это поможет вам найти решение!

0

Введите эту формулу в первой ячейке столбца New1 таблицы 2, затем заполните ее вправо и вниз.

=IFERROR(LOOKUP(2,1/(($A$28:$A$30=$J28)*($B$28:$B$30=$K28)),C$28:C$30),"No Match")

Отрегулируйте диапазон данных по мере необходимости.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .