2015-03-11 2 views
0

У меня есть 2 данных столбцов в Excel, как это:формула Excel для поиска частичного совпадения и выравнивать строки

enter image description here

Может кто-нибудь помочь мне написать формулу в столбце C, который будет принимать первое имя или последнее имя из столбца A и сопоставить его с столбцом B и вставить значения в столбце C. На следующем рисунке вы получите точное представление о том, что я пытаюсь сделать. Благодаря

enter image description here

ответ

0

Поскольку ваши данные не являются «правильными», вы можете попробовать эту формулу, которая использует wild card для поиска только последней фамилии.

=INDEX($B$1:$B$4,MATCH("*" &MID(A1,FIND(" ",A1)+1,99)&"*",$B$1:$B$4,0)) 

Было бы проще, если первая часть последовала некоторое правило, но некоторые из них первый инициал имени в начале; и другие в конце.

Edit:(объяснение добавлено)

FIND возвращает символ номер первого space Добавьте 1 к тому, чтобы получить число символов следующего слова Используйте MID извлечь это слово

Используйте это слово в MATCH (с дикими картами до и после), чтобы найти его в массиве адресов электронной почты.Это вернет его позицию в массиве (номер строки)

Используйте этот номер строки в качестве аргумента функции INDEX, чтобы вернуть фактический адрес электронной почты.

Если вы хотите сначала изучить адрес электронной почты, вам нужно будет определить, какая из букв содержит фамилию. Поскольку это не является правильным в соответствии с вашим примером, вам нужно будет проверить оба параметра.

Вы не сможете найти имя по электронной почте, так как его нет.

Если вы можете гарантировать, что первая часть будет следовать правилу одного или другого, например: либо

  • FirstInitial ЬавЬЫате или
  • LastName FirstInitial

Затем вы можете попробовать следующее:

=IFERROR(INDEX($B$1:$B$4,MATCH(MID(A1,FIND(" ",A1)+1,99)& LEFT(A1,1) &"*",$B$1:$B$4,0)), 
INDEX($B$1:$B$4,MATCH(LEFT(A1,1)&MID(A1,FIND(" ",A1)+1,99) &"*",$B$1:$B$4,0))) 
+0

Отлично! он работал как волшебство! Ищете только последнее имя, так как большая часть идентификатора электронной почты содержит Фамилию. 1) Но если я хочу искать только первое имя, что мне нужно изменить в формуле ?, 2) Если я хочу вернуться, т. Е. Искать «wyatt» из почтового id '[email protected]' и выровнять ' Mascot Wyatt '& 3) Если я ищу имя First из идентификатора email и выровняю полное имя. Каковы будут эти три формулы, можете ли вы ответить? –

+0

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

0

Это, кажется, что вы хотите.

=IFERROR(VLOOKUP(LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1)))&LOWER(MID(A1,1,1))&"*",$B$1:$B$4,1,FALSE),VLOOKUP(LOWER(MID(A1,1,1))&LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1)))&"*",$B$1:$B$4,1,FALSE)) 

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

В основном это делает FLast и FirstL из поля имени, разбивая пространство.

LastF:

=LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1)))&LOWER(MID(A1,1,1)) 

И FirstL:

=LOWER(MID(A1,1,1))&LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1))) 

Затем мы делаем 2 vlookups для них, используя специальные символы:

LastF:

=VLOOKUP([lastfirst equation from above]&"*",$B$1:$B$4,1,FALSE) 

И FirstL:

=VLOOKUP([firstlast equation from above]&"*",$B$1:$B$4,1,FALSE) 

А потом завернуть тех, кто в ЕСЛИОШИБКА так они оба получают пытались:

=IfError([firstLast vlookup],[lastfirst vlookup]) 

Загвоздка в том, что это будет ад для редактирования, если вы когда-нибудь понадобится, поэтому я предлагаю делать каждый кусок в другой колонке, затем ссылаясь на предыдущую. Вы также должны знать, что этот ответ будет сработал, по существу, с тем же именем - например. Сэм Смит и Саша Смит оба соответствовали бы тем, что было первым входом для ssmith. Любое решение здесь, вероятно, будет иметь одинаковую ошибку.

+0

Это намного короче без НИЖНИХ. – pnuts

Смежные вопросы