Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Создание текста по столбцам, Создание текста по столбцам
 
Здравствуйте! Есть таблица с адресами. Необходимо разбить по столбцам данные: индекс, область, город и адрес. Пробувала через " Данные"- "Текст по столбцам" с разделителем через запятую или пробел. Спасибо!
Изменено: Irins - 14 Сен 2018 23:09:41
 
Если индекс пятизначный и слева: =ЛЕВСИМВ(A2;5).
Цитата
Irins написал:
индекс, область, город и адрес
м.Нова Русь,вул. Будьонова 43А - что из этого "область", что из этого "город" и что из этого "адрес"?
Сделайте понятный пример с понятными пояснениями.
И откуда брать индекс, если его нет? В Вашем файле такая третья строка - а Вы ведь хотите, чтобы и в ней после разбивки по столбцам индекс появился?
 
Вообще адрес слишком сложная структура для автоматической обработки. Поэтому если адрес планируется в дальнейшем как то обрабатывать, то желательно изначально заносить в разные ячейки.
Индекс - очень часто не указывают
Регион - для краевых/областных центров обычно не указывают, для городов часто не указывают
Автономия - если есть (вообще в РФ есть только Корякский округ, а остальные автономии фактически являются регионами, но всё равно для них поле регион оставляют пустым, а название автономии, например "Ямало-Ненецкий АО" пишут в поле автономия.
Район -тут хватает своих проблем: написать могут и "р-н", и "район", и просто "р" или "р.". А в Татарстане районы официально называют "улус", а в Краснодарском крае вообще есть "Горячий Ключ Территория". Хотел было написать что название района состоит из одного слова или из двух через дефис, но тут же нашел "Таймырский Долгано-Ненецкий район". Ну и естественно район указывается не для всех населённых пунктов.
Населённый пункт - здесь просто фантазия безгранична. Города, посёлки, деревни, станицы, хутора... Можете представить варианты сокращения названий? А как вам такие населённые пункты: "03900101 Квартал Аэропорт", "Анаткасы - Тораевская Сельская Администрация", "Поддубье Ретюньское Сельское Поселение", "Поселок С-За 2-я Пятилетка". А вот рекордсмен по количеству слов в названии населённого пункта "Центральной Усадьбы  Племзавода Имени Максима Горького"
Подчинённый населённый пункт - об этой части адреса часто забывают, а многие даже не догадываются. В большинстве случаев это сельские поселения, вошедшие в состав города, например адрес: "город Краснодар, хутор Ленина, улица Ленина...". Но в стране 847 неповторяющихся наименований таких подчинённых населённых пунктов и оних не нужно забывать. А названия у них могут быть тоже интересными: "27 км", "13-й", "8а", "12" и т.п.
Улица - тут обычные проблемы с вариантами сокращений улица, площадь, переулок, проспект, тупик, проезд. Но бывают адреса без улицы (и её аналогов). Просто населённый пункт и номер дома. Ну и варианты написания вроде "Театральная площадь" и "площадь Театральная".
Номер дома - казалось бы простой элемент, но существуют ещё понятия "Корпус", "Строение" (они могут быть в одном адресе)., "Литера", "Дробь". Вариантов написания тоже масса: "8а", "8 а", "8-а". Когда пишут "д.", но часто - нет. Или такой вариант: "д. 5-1" - вы догадаетесь что это дом пять корпус один или дом пять  квартира 1?
Номер квартиры - редко но бывают квартиры "78а" или "35-1"
Так что все варианты автоматического разделения строки адреса на составляющие задача весьма и весьма непростая. Конечно если адреса относятся к одному населённому пункту и все они практически одинаковой структуры, то формула (макрос) для частного случая будут не очень сложными, хотя всё равно возможны различные варианты с сокращениями г., гор., ул., пр. и т.д. и останется надеятся что в адресе не попадётся какой-нибудь "Чудиново Чудиновский Сельский Совет"
Не стреляйте в тапера - он играет как может.
 
вариант UDF для столбцов B C,нужен файл-пример,строк 15-20,что дано и в другом столбце как надо

Код
Function aaa$(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "^\d+"
 If .test(t) Then aaa = .Execute(t)(0)
 End With
End Function
Код
Function bbb$(t$)
 With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "[^,]+"
 If .test(t) Then bbb = .Execute(t)(1)
 End With
End Function
Изменено: кузя1972 - 15 Сен 2018 09:22:17
 
еще вариант в столбцах B-G
Страницы: 1
Читают тему (гостей: 1)
Наверх