Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/макрос для адреса проживающего - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос для адреса проживающего (Макросы/Sub)
макрос для адреса проживающего
СерТ Дата: Четверг, 18.06.2020, 15:32 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, дорогие ценители вба экселя, многие Вам лета и проч. проч. Еще раз обращаюсь к вам, с надеждой, что не откажете непонимающему, несведущему в столь знатном ремесле. Дело в том, что раньше я, с помощью вас, дорогие вы мои друзья, сделал конверты, и еще другие штуки, которые не показываю, так как не пригодятся они вам, но сейчас, злая порча, взошедшая из Китая, заставила в нашем ведомстве писать письма, и встала опять передо мною проблема, как перед тем Левшой, и прошу нижайше помочь с этим делом. Дело в том, что я могу получать сведения в экселе, но адрес там в виде строки, с разделением в виде ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), это хорошо, но бывают адреса, которые «короткие» например, 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, а в основном нормальные например: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, я использую такую штуку:
[vba]
Код

       Dim fadr$(): fadr = Split(Cells(r, 2), ",")
       shtZ.Cells(3, 6) = fadr(2) + "," + fadr(3)
       shtZ.Cells(4, 6) = fadr(4) + "," + fadr(5)  
       shtZ.Cells(5, 6) = fadr(0)
[/vba]
И вот если мы натыкаемся на короткий адрес вба эксель меня шлет подальше, говорит, аут оф рандж, как быть? какой элс сделать?
ну я понял, что fadr(5) может не быть, а как обойти эту ошибку, пусть пишет без fadr(5), пытался определить конечное число, не получается, то есть
если больше 5, то так, а если не нет, то этак, не получается, очень сложная для меня тема.


Сообщение отредактировал СерТ - Четверг, 18.06.2020, 15:43
 
Ответить
СообщениеЗдравствуйте, дорогие ценители вба экселя, многие Вам лета и проч. проч. Еще раз обращаюсь к вам, с надеждой, что не откажете непонимающему, несведущему в столь знатном ремесле. Дело в том, что раньше я, с помощью вас, дорогие вы мои друзья, сделал конверты, и еще другие штуки, которые не показываю, так как не пригодятся они вам, но сейчас, злая порча, взошедшая из Китая, заставила в нашем ведомстве писать письма, и встала опять передо мною проблема, как перед тем Левшой, и прошу нижайше помочь с этим делом. Дело в том, что я могу получать сведения в экселе, но адрес там в виде строки, с разделением в виде ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), это хорошо, но бывают адреса, которые «короткие» например, 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, а в основном нормальные например: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, я использую такую штуку:
[vba]
Код

       Dim fadr$(): fadr = Split(Cells(r, 2), ",")
       shtZ.Cells(3, 6) = fadr(2) + "," + fadr(3)
       shtZ.Cells(4, 6) = fadr(4) + "," + fadr(5)  
       shtZ.Cells(5, 6) = fadr(0)
[/vba]
И вот если мы натыкаемся на короткий адрес вба эксель меня шлет подальше, говорит, аут оф рандж, как быть? какой элс сделать?
ну я понял, что fadr(5) может не быть, а как обойти эту ошибку, пусть пишет без fadr(5), пытался определить конечное число, не получается, то есть
если больше 5, то так, а если не нет, то этак, не получается, очень сложная для меня тема.

Автор - СерТ
Дата добавления - 18.06.2020 в 15:32
китин Дата: Четверг, 18.06.2020, 15:40 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
какой элс сделать?


- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
какой элс сделать?


- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума

Автор - китин
Дата добавления - 18.06.2020 в 15:40
СерТ Дата: Четверг, 18.06.2020, 16:02 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Что делать, я не могу отформатировать свой файл, он очень сложный, там много сведений, я честно слово не могу его так быстро сделать, а этот "товарищ" требует, чтобы я его "сделал"? Хорошо, извините, сейчас заметил, файл исходный и файл нужный. все понял
Ребята, огромное спасибо, но как добавить свой вопрос?, Извините, я нуб.


Сообщение отредактировал СерТ - Четверг, 18.06.2020, 16:17
 
Ответить
СообщениеЧто делать, я не могу отформатировать свой файл, он очень сложный, там много сведений, я честно слово не могу его так быстро сделать, а этот "товарищ" требует, чтобы я его "сделал"? Хорошо, извините, сейчас заметил, файл исходный и файл нужный. все понял
Ребята, огромное спасибо, но как добавить свой вопрос?, Извините, я нуб.

Автор - СерТ
Дата добавления - 18.06.2020 в 16:02
китин Дата: Четверг, 18.06.2020, 16:14 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
ну если вам не нравится требования этого товарища, то можете получить такой же общий ответ на ваш совершенно неконкретный вопрос


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениену если вам не нравится требования этого товарища, то можете получить такой же общий ответ на ваш совершенно неконкретный вопрос

Автор - китин
Дата добавления - 18.06.2020 в 16:14
Pelena Дата: Четверг, 18.06.2020, 16:14 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19165
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Попробуйте добавить пару запятых к исходному адресу
[vba]
Код
fadr = Split(Cells(r, 2)&",,", ",")
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПопробуйте добавить пару запятых к исходному адресу
[vba]
Код
fadr = Split(Cells(r, 2)&",,", ",")
[/vba]

Автор - Pelena
Дата добавления - 18.06.2020 в 16:14
СерТ Дата: Четверг, 18.06.2020, 16:18 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
О нашел, !!!!, щас попробую 2 запятых!!!
 
Ответить
СообщениеО нашел, !!!!, щас попробую 2 запятых!!!

Автор - СерТ
Дата добавления - 18.06.2020 в 16:18
СерТ Дата: Четверг, 18.06.2020, 16:28 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Извините, пишет, что экспектид энд оф стаутмент.
В общем пожалйста, может другим пригодиться.
 
Ответить
СообщениеИзвините, пишет, что экспектид энд оф стаутмент.
В общем пожалйста, может другим пригодиться.

Автор - СерТ
Дата добавления - 18.06.2020 в 16:28
Kuzmich Дата: Четверг, 18.06.2020, 16:28 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Вы напишите несколько адресов, чтобы понять что кроме пгн может быть село, дер., пос и др. написания.
р-н может быть и р-он, и район и т.д.
Сколько цифр м.б. в номере квартиры?
 
Ответить
СообщениеВы напишите несколько адресов, чтобы понять что кроме пгн может быть село, дер., пос и др. написания.
р-н может быть и р-он, и район и т.д.
Сколько цифр м.б. в номере квартиры?

Автор - Kuzmich
Дата добавления - 18.06.2020 в 16:28
СерТ Дата: Четверг, 18.06.2020, 16:34 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Адрес у нас строго в ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), значит вперед индекс, потом регион, потом город, потом улицы, но дело в том что некоторые адресы получаются то короче, или больше, если их разбирать для писем, или исходящих, как предусмотреть эту ошибку, неужели этот ваш "я только учусь", не заинтересуется этой ошибкой? С другой стороны, какое мне дело до него? Просто я наивный человек... и заранее извиняюсь за все сказанное.
 
Ответить
СообщениеАдрес у нас строго в ФИАС (ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА), значит вперед индекс, потом регион, потом город, потом улицы, но дело в том что некоторые адресы получаются то короче, или больше, если их разбирать для писем, или исходящих, как предусмотреть эту ошибку, неужели этот ваш "я только учусь", не заинтересуется этой ошибкой? С другой стороны, какое мне дело до него? Просто я наивный человек... и заранее извиняюсь за все сказанное.

Автор - СерТ
Дата добавления - 18.06.2020 в 16:34
Kuzmich Дата: Четверг, 18.06.2020, 16:38 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Вы не ответили на мой вопрос
Вот для этого и нужен небольшой пример. Вам нужно вытащить адрес из какого-то контекста?


Сообщение отредактировал Kuzmich - Четверг, 18.06.2020, 16:45
 
Ответить
СообщениеВы не ответили на мой вопрос
Вот для этого и нужен небольшой пример. Вам нужно вытащить адрес из какого-то контекста?

Автор - Kuzmich
Дата добавления - 18.06.2020 в 16:38
СерТ Дата: Четверг, 18.06.2020, 16:45 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, хорошо сейчас, там правда впереди был пример, а Вам как надо в таблице эксель?
 
Ответить
СообщениеKuzmich, хорошо сейчас, там правда впереди был пример, а Вам как надо в таблице эксель?

Автор - СерТ
Дата добавления - 18.06.2020 в 16:45
СерТ Дата: Четверг, 18.06.2020, 16:54 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Высылаю примеры адресов, и что должно получиться, дело в том, что если в массиве мало, то пишет ошибку
К сообщению приложен файл: 2827667.xlsx (9.5 Kb)
 
Ответить
СообщениеВысылаю примеры адресов, и что должно получиться, дело в том, что если в массиве мало, то пишет ошибку

Автор - СерТ
Дата добавления - 18.06.2020 в 16:54
Kuzmich Дата: Четверг, 18.06.2020, 16:58 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Т.е. вам адрес нужно разнести по трем ячейкам?
 
Ответить
СообщениеТ.е. вам адрес нужно разнести по трем ячейкам?

Автор - Kuzmich
Дата добавления - 18.06.2020 в 16:58
СерТ Дата: Четверг, 18.06.2020, 17:07 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
В общем, еще раз, огромное спасибо, за те ответы, и за ваш форум, ни в коем случае, не претендую на ваш ответ, но прошу, очень прошу, строку на массив разделить, вставить как раздельное, не знаю, почему то это гадость выдает ошибку.
 
Ответить
СообщениеВ общем, еще раз, огромное спасибо, за те ответы, и за ваш форум, ни в коем случае, не претендую на ваш ответ, но прошу, очень прошу, строку на массив разделить, вставить как раздельное, не знаю, почему то это гадость выдает ошибку.

Автор - СерТ
Дата добавления - 18.06.2020 в 17:07
СерТ Дата: Четверг, 18.06.2020, 17:11 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
да, но оно(чудище обло и вообще наогло) не дает,
 
Ответить
Сообщениеда, но оно(чудище обло и вообще наогло) не дает,

Автор - СерТ
Дата добавления - 18.06.2020 в 17:11
Kuzmich Дата: Четверг, 18.06.2020, 17:51 | Сообщение № 16
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
обло и вообще наогло

Это вы на каком языке написали?
Где в вашем примере макрос?
Напишите, что вам нужно нормально
 
Ответить
Сообщение
Цитата
обло и вообще наогло

Это вы на каком языке написали?
Где в вашем примере макрос?
Напишите, что вам нужно нормально

Автор - Kuzmich
Дата добавления - 18.06.2020 в 17:51
СерТ Дата: Четверг, 18.06.2020, 18:55 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
В общем есть адреса в основном: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, значит если я разбиваю их с помощью макроса
[vba]
Код
Dim fadr$(): fadr = Split(Cells(r, 2), ",")
shtZ.Cells(3, 6) = fadr(2) + "," + fadr(3)
shtZ.Cells(4, 6) = fadr(4) + "," + fadr(5)
shtZ.Cells(5, 6) = fadr(0)
[/vba]
они нормально делятся, без ошибки, а если есть адреса: 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, то они выдают ошибку аут оф рэндж, то есть программа ищет fadr(5), но не находит. и пишет ошибку. как эту ошибку обойти, мне может написать цикл, что если fadr(5) равен нулю..., но блин, в природе если первый адрес, то его нет, как это описать?
 
Ответить
СообщениеВ общем есть адреса в основном: 881000, Беловежская область, Заиграевский р-н, Ольгиевск пгт, Береговая ул, д. 25, значит если я разбиваю их с помощью макроса
[vba]
Код
Dim fadr$(): fadr = Split(Cells(r, 2), ",")
shtZ.Cells(3, 6) = fadr(2) + "," + fadr(3)
shtZ.Cells(4, 6) = fadr(4) + "," + fadr(5)
shtZ.Cells(5, 6) = fadr(0)
[/vba]
они нормально делятся, без ошибки, а если есть адреса: 881000, Беловежская область, Беловежье г, Маршала Жукова ул, д. в/ч, то они выдают ошибку аут оф рэндж, то есть программа ищет fadr(5), но не находит. и пишет ошибку. как эту ошибку обойти, мне может написать цикл, что если fadr(5) равен нулю..., но блин, в природе если первый адрес, то его нет, как это описать?

Автор - СерТ
Дата добавления - 18.06.2020 в 18:55
СерТ Дата: Четверг, 18.06.2020, 18:59 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Борода, Маняша дайте ответ пожалуйста, вы же всегда давали мне ответ!
 
Ответить
СообщениеБорода, Маняша дайте ответ пожалуйста, вы же всегда давали мне ответ!

Автор - СерТ
Дата добавления - 18.06.2020 в 18:59
Kuzmich Дата: Четверг, 18.06.2020, 19:02 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
если я разбиваю их с помощью

Разбивайте с помощью 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
[/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
[/vba]

Автор - Kuzmich
Дата добавления - 18.06.2020 в 19:02
Pelena Дата: Четверг, 18.06.2020, 19:11 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 19165
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Мой вариант м двумя запятыми тоже работает. Запускать надо с листа Пример адр


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМой вариант м двумя запятыми тоже работает. Запускать надо с листа Пример адр

Автор - Pelena
Дата добавления - 18.06.2020 в 19:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос для адреса проживающего (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!