Как извлечь адрес в Excel? - PullRequest
0 голосов
/ 29 мая 2019

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

введите описание изображения здесь

В первом примере у меня есть четыре строки ивторой имеет три

Anchorage Oncology Centre
3801 University Lake Drive
Suite 300-B2
Anchorage, AK 99508 US

Я хотел бы, чтобы выше, как разбить на 5 ячеек.Одна ячейка для адреса, города, штата, почтового индекса и страны

Anchorage Oncology Centre
3801 University Lake Drive
Suite 300-B2


Anchorage

AK 

99508 

US

во втором примере ниже

Providence Alaska Medical Center
3200 Providence Drive
Anchorage, AK 99508 US

Мне бы хотелось

Providence Alaska Medical Center
3200 Providence Drive

Anchorage

AK 

99508 

US

Может ли этосделать с помощью формулы?

Что я сделал до сих пор, так это то, что полный адрес находится в ячейке A1, и я хочу, чтобы они были в B1, C1, D1, E1F1.То, что я сделал, для страны, которую я использую =RIGHT(A2,2), почтовый индекс, я использую =MID(A2, LEN(A2)-7, 5), штат =MID(A2, LEN(A2)-10, 2).Сейчас я пытаюсь извлечь город.Город находится перед запятой и после разрыва строки (Char(10)), а адрес - первые 2 или 3 строки.Я не знаю, как это сделать.

Между каждой строкой есть разрыв строки.

Спасибо

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Если вы используете SUBSTITUTE(), вы можете заменить n-ное вхождение символа новым, затем используйте FIND(), чтобы вернуть этот символ. Например, если вы SUBSTITUTE ваш CHAR(10), третье вхождение, вы снова можете найти этот символ, который будет концом адреса.

Так что, если ваш полный адрес указан в A1, вы можете извлечь адрес с помощью LEFT(A1,FIND("~",SUBSTITUTE(A1,CHAR(10),"~",3)))

enter image description here

1 голос
/ 29 мая 2019

Возможное решение:

=IF(ROW(A1)<SUMPRODUCT((A$1:A$7<>"")*1),A1,TRIM(MID(SUBSTITUTE(SUBSTITUTE(INDEX(A$1:A$7,SUMPRODUCT((A$1:A$7<>"")*1)),",",)," ",REPT(" ",999)),(ROW(X1)-SUMPRODUCT((A$1:A$7<>"")*1)+1)*999-998,999)))

Отсеканная часть отсюда :

=TRIM(MID(SUBSTITUTE(A$2," ",REPT(" ",999)),ROW(X1)*999-998,999))

Я добавил несколько вычислений, чтобы найти последнюю строку, иисключите запятые:

SUBSTITUTE(INDEX(A$1:A$7,SUMPRODUCT((A$1:A$7<>"")*1)),",",)

Если все адреса расположены в первом ряду, то вы можете вставить формулу под адресом в первом столбце и скопировать ее вниз и вправо.В настоящее время адрес может содержать 7 строк, поэтому вам нужно скопировать его как минимум в строку 8.

enter image description here

...