Разбор ячейки excel. Как?

У нас есть файл Excel. Этот файл находится в ячейках с названием «адрес», содержащих строку, например:

The Accounts Department, National Bank Ltd, 20 Lombard Str., London 3 WRS, England

Необходимо обмениваться информацией в сотовых группах. То есть у нас должны быть следующие ячейки:

«страна»: Англия «город»: Лондон «улица»: Lombard Str. ..... и другие

Это необходимо для анализа содержимого ячейки и разделения содержимого на логические части. Вы можете сказать, с чего я начал?


person user471011    schedule 10.10.2010    source источник


Ответы (2)


Нет надежного способа сделать это. Предполагая (и это большое предположение), что запятые используются только для разделения ячеек, вы можете открыть меню Data, выбрать Text To Columns и выбрать comma в качестве разделителя.

Это должно дать вам что-то вроде следующего:

A1                      | B1                | C1              | D1           | E1     
The Accounts Department | National Bank Ltd | 20 Lombard Str. | London 3 WRS | England

Оттуда, в ячейке F1, вы можете сделать следующее, чтобы попытаться извлечь название улицы:

=RIGHT(C1,LEN(TRIM(C1))-FIND(" ",TRIM(C1)))

Вы можете использовать это, чтобы найти город:

=LEFT(D1,FIND(" ",TRIM(D1)))

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

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

person LittleBobbyTables - Au Revoir    schedule 10.10.2010
comment
К формулам, предназначенным для извлечения названия города и улицы, следует относиться с осторожностью. В зависимости от нормализации данных обычно необходимо выполнить поиск по словарю для идентификации имен. - person Dr. belisarius; 10.10.2010
comment
как насчет адресов, которые имеют разное количество строк или разные компоненты адреса? Тогда ваши столбцы не выстроятся. - person Richard H; 10.10.2010

Это действительно зависит от того, разделены ли ваши «логические части» каким-либо образом, чтобы вы могли идентифицировать каждую часть отдельно. Я сомневаюсь, что вы можете использовать запятую "," в качестве разделителя, поскольку компоненты адреса могут сами содержать запятые (например, название фирмы/бизнеса). Кроме того, у вас могут быть проблемы с чистотой данных - то есть запятые могут отсутствовать, стоять не в том месте или что-то еще.

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

1) Почтовый индекс (для этого есть хорошо известное регулярное выражение, однако вам снова может понадобиться справиться с неправильными или недействительными почтовыми индексами или опечатками)

2) Страна и город, город - вы можете получить их со словарем британских городов и городов. Есть Гугл.

3) Деревни - сложнее, но опять же словарь на 98% поможет.

4) Улицы, дороги и т. д.: словарь для этого не годится. Вам нужно будет сделать какое-то распознавание на основе ключевых слов — если поле заканчивается улицей, дорогой, переулком или чем-то еще. Однако таких очень много. Вы можете обнаружить, что байесовский подход хорошо работает для этого.

5) Название компании, отдел и т. д. Еще сложнее. Опять же, некоторые ключевые слова могут помечать их (например, «ltd»), но я предполагаю, что большинство ваших записей не обязательно включают юридическое лицо. А отделы могут быть любыми.

Кроме того, как насчет имен людей? Вы можете узнать их?

Короче говоря, это довольно большая и сложная работа, которую нужно выполнить правильно. Нет простого/простого ответа.

Кстати, если у вас есть доступ к PAF, это может вам помочь: http://www.royalmail.com/portal/rm/jump2?mediaId=400085&catId=400084&campaignid=paf_redirect

Но это все равно не поможет вам с именами отделов, компаний или людей.

person Richard H    schedule 10.10.2010
comment
+1 Показывает сложную часть работы. Наивный подход обречен. - person Dr. belisarius; 10.10.2010