Определите разные версии имен людей как одного и того же человека

У меня есть следующая информация для того же человека в столбце A электронной таблицы:

ALAN K HURTZ
ALAN K HURTZ, ATTY
ALAN K. HURTZ
ALAN K. HURTZ, ATTY
ALAN K. HURTZ, ATTY.
ALAN HURTZ
ALAN HURTZ NDER
ALAN HURTZ ORPD
ALAN HURTZ, ATTY
ALAN HURTZ, ATTY.
ALAN HURTZ, ESQ
ALAN HURTZ, ESQ.
ALAN P. HURTZ, ATTY.

В другой таблице у меня есть эта строка:

A           B         C         D       E        F

Hurtz       Alan      K.        ALIAS   91065    1451894

Мне нужно иметь возможность добавить в столбец листа B это значение: 1451894 (столбец F из листа2) для каждой записи. Мне не повезло с ВПР или ПОИСКПОЗ.

Любые предложения о том, как я могу сравнить эти значения?


person Leslie    schedule 04.05.2012    source источник
comment
как Аллан П. Hutz то же, что и Аллан К. больно?   -  person Aprillion    schedule 04.05.2012
comment
какие методы очистки данных вы пробовали? (например, для извлечения формата last_name first_name из столбца A листа 1?)   -  person Aprillion    schedule 04.05.2012
comment
теперь мы знаем, что алан юрист   -  person Alex Gordon    schedule 05.05.2012
comment
Это нетривиальная задача в любом приложении, особенно в Excel. Вы можете попробовать SEARCH проверить, существуют ли термины на другом листе в той или иной строке данных, но вам придется решить, достаточно ли этого для положительной идентификации целевых данных. В этой заметке вы предоставили только те данные, которые, как вы ожидаете, будут совпадать, а не данные, которые не должны совпадать. Таким образом, даже если вы получите здесь решение, специфичное для г-на Хертца, оно может оказаться неприемлемым для ваших реальных данных.   -  person andy holaday    schedule 05.05.2012
comment
@deathApril - это опечатка - наши данные полны ими ... Я попытался объединить первую среднюю и последнюю со второго листа в другую ячейку и попытался использовать ПОИСКПОЗ. Я попытался разделить полное имя с листа 1 на первое среднее и последнее и попытался использовать ВПР. Я попытался сделать лист 2 источником запроса к базе данных, чтобы использовать функцию LIKE. Кроме того, это первый проход, который будет предоставлен человеку для проверки и исправления. Я просто пытаюсь сэкономить время, делая как можно больше с нечеловеческими инструментами.   -  person Leslie    schedule 08.05.2012


Ответы (1)


Эта задача не подходит для Excel, отчасти потому, что SEARCH и FIND работают только слева направо и находят только первый экземпляр. Тем не менее, вы не можете надеяться получить идеальный результат от любого автоматизированного решения и можете быть готовы принять плохое приближение к чему-то относительно простому - т.е. это ваш выбор, сколько усилий вы потратите на кодирование, а не на проверку человеком. .

Для начала я предлагаю создать таблицу поиска из вашего второго листа с именами first_name, initial, last_name и first_name, last_name, указывающими на значения, которые у вас есть в ColumnF. В первом случае вы можете захотеть объединить что-то вроде "inc Initial" со значением ColumnF, чтобы указать более близкое совпадение, чем без совпадения с начальным.

Тогда я предлагаю скопировать столбец A вашего первого листа в столбец B и удалить ESQ из столбца B (по крайней мере, для фамилий, не запускающих ESQ!). В США насчитывается около 40 000 человек, чьи фамилии начинаются с «Esq», но, возможно, будет проще разобраться с ними как с отдельной проблемой, чем отказаться от возможности «игнорировать» Esquires.

Я бы предложил ввести следующее в ColumnsC:N соответственно (при условии, что Row1 является меткой данных): =FIND(" ",B2) =IF(ISERROR(FIND(",",B2)),0,FIND(",",B2)) =LEN(B2) =LEFT(B2,C2) =IF(C2>0,MID(B2,C2+1,E2-C2+1),0) =LEFT(G2,1) =IF(ISERROR(FIND(" ",G2)),0,FIND(" ",G2)) =MID(G2,I2+1,E2-C2) =IF(ISERROR(FIND(",",J2)),IF(ISERROR(FIND(".",J2)),0,FIND(".",J2)),FIND(",",J2)) =IF(K2=0,J2,LEFT(J2,K2-1)) =IF(I2>0,F2&H2&" "&L2,F2&L2) =VLOOKUP(M2,array,2,FALSE), где «массив» — это таблица поиска в Sheet2.

Из вашей выборки из 13, которые должны дать вам «совпадения» для 8, причем 5 из них включают совпадение среднего инициала. Если недостаточно хорошо, просто продолжайте добавлять формулы в столбцы справа, пока не достигнете точки компромисса (например, хотя ваш 13-й пример является одним из 5 выше, которые не совпадают, он подойдет, если в отдельном столбце вы не объединили букву «P» - с тем фактом, что она совпала в таком другом столбце, это признак того, что она не была так близка к совпадению, как 8 других). И вы могли бы относиться к ATTY так же, как к ESQ, хотя в США более 100 000 человек с этой фамилией.

В качестве альтернативы вы можете предложить вознаграждение или попробовать freelancer.com, где, как я ожидаю, вы найдете множество людей, довольных небольшой суммой, которые предоставят код, который будет не только гораздо более избирательным, но, вероятно, даст вам «оценку», чтобы указать, как вероятно, любое «совпадение».

person pnuts    schedule 10.07.2012