Здравствуйте, дорогие ценители вба экселя, многие Вам лета и проч. проч. Еще раз обращаюсь к вам, с надеждой, что не откажете непонимающему, несведущему в столь знатном ремесле. Дело в том, что раньше я, с помощью вас, дорогие вы мои друзья, сделал конверты, и еще другие штуки, которые не показываю, так как не пригодятся они вам, но сейчас, злая порча, взошедшая из Китая, заставила в нашем ведомстве писать письма, и встала опять передо мною проблема, как перед тем Левшой, и прошу нижайше помочь с этим делом. Дело в том, что я могу получать сведения в экселе, но адрес там в виде строки, с разделением в виде ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), это хорошо, но бывают адреса, которые «короткие» например, 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, а в основном нормальные например: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, я использую такую штуку: [vba]
[/vba] И вот если мы натыкаемся на короткий адрес вба эксель меня шлет подальше, говорит, аут оф рандж, как быть? какой элс сделать? ну я понял, что fadr(5) может не быть, а как обойти эту ошибку, пусть пишет без fadr(5), пытался определить конечное число, не получается, то есть если больше 5, то так, а если не нет, то этак, не получается, очень сложная для меня тема.
Здравствуйте, дорогие ценители вба экселя, многие Вам лета и проч. проч. Еще раз обращаюсь к вам, с надеждой, что не откажете непонимающему, несведущему в столь знатном ремесле. Дело в том, что раньше я, с помощью вас, дорогие вы мои друзья, сделал конверты, и еще другие штуки, которые не показываю, так как не пригодятся они вам, но сейчас, злая порча, взошедшая из Китая, заставила в нашем ведомстве писать письма, и встала опять передо мною проблема, как перед тем Левшой, и прошу нижайше помочь с этим делом. Дело в том, что я могу получать сведения в экселе, но адрес там в виде строки, с разделением в виде ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), это хорошо, но бывают адреса, которые «короткие» например, 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, а в основном нормальные например: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, я использую такую штуку: [vba]
[/vba] И вот если мы натыкаемся на короткий адрес вба эксель меня шлет подальше, говорит, аут оф рандж, как быть? какой элс сделать? ну я понял, что fadr(5) может не быть, а как обойти эту ошибку, пусть пишет без fadr(5), пытался определить конечное число, не получается, то есть если больше 5, то так, а если не нет, то этак, не получается, очень сложная для меня тема.СерТ
Сообщение отредактировал СерТ - Четверг, 18.06.2020, 15:43
Что делать, я не могу отформатировать свой файл, он очень сложный, там много сведений, я честно слово не могу его так быстро сделать, а этот "товарищ" требует, чтобы я его "сделал"? Хорошо, извините, сейчас заметил, файл исходный и файл нужный. все понял Ребята, огромное спасибо, но как добавить свой вопрос?, Извините, я нуб.
Что делать, я не могу отформатировать свой файл, он очень сложный, там много сведений, я честно слово не могу его так быстро сделать, а этот "товарищ" требует, чтобы я его "сделал"? Хорошо, извините, сейчас заметил, файл исходный и файл нужный. все понял Ребята, огромное спасибо, но как добавить свой вопрос?, Извините, я нуб.СерТ
Сообщение отредактировал СерТ - Четверг, 18.06.2020, 16:17
Вы напишите несколько адресов, чтобы понять что кроме пгн может быть село, дер., пос и др. написания. р-н может быть и р-он, и район и т.д. Сколько цифр м.б. в номере квартиры?
Вы напишите несколько адресов, чтобы понять что кроме пгн может быть село, дер., пос и др. написания. р-н может быть и р-он, и район и т.д. Сколько цифр м.б. в номере квартиры?Kuzmich
Адрес у нас строго в ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), значит вперед индекс, потом регион, потом город, потом улицы, но дело в том что некоторые адресы получаются то короче, или больше, если их разбирать для писем, или исходящих, как предусмотреть эту ошибку, неужели этот ваш "я только учусь", не заинтересуется этой ошибкой? С другой стороны, какое мне дело до него? Просто я наивный человек... и заранее извиняюсь за все сказанное.
Адрес у нас строго в ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), значит вперед индекс, потом регион, потом город, потом улицы, но дело в том что некоторые адресы получаются то короче, или больше, если их разбирать для писем, или исходящих, как предусмотреть эту ошибку, неужели этот ваш "я только учусь", не заинтересуется этой ошибкой? С другой стороны, какое мне дело до него? Просто я наивный человек... и заранее извиняюсь за все сказанное.СерТ
В общем, еще раз, огромное спасибо, за те ответы, и за ваш форум, ни в коем случае, не претендую на ваш ответ, но прошу, очень прошу, строку на массив разделить, вставить как раздельное, не знаю, почему то это гадость выдает ошибку.
В общем, еще раз, огромное спасибо, за те ответы, и за ваш форум, ни в коем случае, не претендую на ваш ответ, но прошу, очень прошу, строку на массив разделить, вставить как раздельное, не знаю, почему то это гадость выдает ошибку.СерТ
В общем есть адреса в основном: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, значит если я разбиваю их с помощью макроса [vba]
[/vba] они нормально делятся, без ошибки, а если есть адреса: 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, то они выдают ошибку аут оф рэндж, то есть программа ищет fadr(5), но не находит. и пишет ошибку. как эту ошибку обойти, мне может написать цикл, что если fadr(5) равен нулю..., но блин, в природе если первый адрес, то его нет, как это описать?
В общем есть адреса в основном: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, значит если я разбиваю их с помощью макроса [vba]
[/vba] они нормально делятся, без ошибки, а если есть адреса: 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, то они выдают ошибку аут оф рэндж, то есть программа ищет fadr(5), но не находит. и пишет ошибку. как эту ошибку обойти, мне может написать цикл, что если fadr(5) равен нулю..., но блин, в природе если первый адрес, то его нет, как это описать?СерТ
Function Index(cell As String) With CreateObject("VBScript.RegExp") .Global = True .ignorecase = True .Pattern = "\d{6}" Index = "Индекс: " & .Execute(cell)(0) End With End Function
Function Region(cell As String) With CreateObject("VBScript.RegExp") .Global = True .ignorecase = True .Pattern = "[а-яё\s]+область,\s?([а-яё\s]+р-н)?" Region = .Execute(cell)(0) End With End Function
Function Town(cell As String) With CreateObject("VBScript.RegExp") .Global = True .ignorecase = True .Pattern = "[а-яё\s]+(г\.?|пгт),\s[а-яё\s]+ул,\sд.\s?(\d{1,3}|в/ч)" Town = .Execute(cell)(0) End With End Function
[/vba]
Цитата
если я разбиваю их с помощью
Разбивайте с помощью UDF [vba]
Код
Function Index(cell As String) With CreateObject("VBScript.RegExp") .Global = True .ignorecase = True .Pattern = "\d{6}" Index = "Индекс: " & .Execute(cell)(0) End With End Function
Function Region(cell As String) With CreateObject("VBScript.RegExp") .Global = True .ignorecase = True .Pattern = "[а-яё\s]+область,\s?([а-яё\s]+р-н)?" Region = .Execute(cell)(0) End With End Function
Function Town(cell As String) With CreateObject("VBScript.RegExp") .Global = True .ignorecase = True .Pattern = "[а-яё\s]+(г\.?|пгт),\s[а-яё\s]+ул,\sд.\s?(\d{1,3}|в/ч)" Town = .Execute(cell)(0) End With End Function