2013-04-26 2 views
2

У меня есть колонка из нескольких тысяч имен файлов, которые не являются однородными. Например:Соответствующий текст из столбца в пределах определенной ячейки - Excel

|  Column A  | Column B | 
=============================== 
| junk_City1_abunc | City1 | 
------------------------------- 
| nunk_City1_blahb | City1 | 
------------------------------- 
| small=City2_jdjf | City2 | 
------------------------------- 
| mozrmcity3_somet | City3 | 

Я хотел бы определить город в тексте в столбце А и вернуть его в колонке Б.

Я придумал сложную формулу, которая делает трюк, но трудно регулировать, если больше городов будут добавлены в именах файлов в новых записях в столбце A.

Вот пример:

=IF(ISNA(MATCH("*"&$W$3&"*",I248,0)),IF(ISNA(MATCH("*"&$W$4&"*",I248,0)),IF(ISNA(MATCH("*"&$W$5&"*",I248,0)),IF(ISNA(MATCH("*"&$W$6&"*",I248,0)),IF(ISNA(MATCH("*"&$W$7&"*",I248,0)),IF(ISNA(MATCH("*"&$W$8&"*",I248,0)),"Austin","Orlando"),"Las Vegas"),"Chicago"),"Boston"),"Las Angeles"),"National") 

Похоже, что должно быть проще чтобы сделать это, но я просто не могу понять это.

(Что еще хуже, я не только идентифицирующий город в пределах файла, я искал другие атрибуты для заполнения других столбцов)

Может кто-нибудь помочь?

+0

Существуют два различных подхода. Первым было бы идентифицировать разделителей типа «_» и «=», если они будут следовать порядку и получить строку (город) между ними. Второй будет другой столбец со всеми существующими городами и проверьте, существует ли в столбце A –

+1

. Чтобы быть ясным, вы хотите проверить каждую ячейку (в столбце A), чтобы увидеть, содержит ли оно одно из значений в вашем списке городов, если вам нужно это значение в столбце B? – bendataclear

+0

'Las Angeles' ->' Los Angeles' – Aprillion

ответ

0

Используйте формулу =IFERROR(LOOKUP(1E+100,SEARCH($E$2:$E$11,A2),$E$2:$E$11),A2)

Это делает ***** ***** НЕ должен быть массив вошел.

Где $ E $ 2: $ E $ 11 является список имен, которые вы хотите, возвращенных и А2 является ячейка для проверки

Если совпадений не найдено, а не ошибок, которые вы просто использовать полное имя в колонке б.

Если вы хотите ошибки или ожидать, чтобы никогда не то вы можете просто использовать:

=LOOKUP(1E+100,SEARCH($E$2:$E$11,A2),$E$2:$E$11) 

enter image description here

+0

ЭТО РАБОТАЕТ! Я потратил на это бесчисленные часы. Я не могу тебя отблагодарить. – user2324020

0

Вот вокруг так, что работает, а не всю мою собственную работу, но с миш затора битов из других источников:

Допуская листа настройки следующим образом:

Starting Position

Формула для использования ниже, это необходимо ввести с помощьюCtrl + Сдвиг + Введите

=INDEX($C$2:$C$8,MAX(IF(ISERROR(SEARCH($C$2:$C$8,A2)),-1,1)*(ROW($C$2:$C$8)-ROW($C$2)+1))) 

Аннотированный версия:

=INDEX([List of search terms],MAX(IF(ISERROR(SEARCH([List of search terms],[Cell to search])),-1,1)*(ROW([List of search terms])-ROW([Cell containing first search term])+1))) 
Смежные вопросы