Kuradile
Дата: Пятница, 04.11.2016, 10:15 |
Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Добрый день. Надеюсь поможете. Необходимо разбить адреса на составляющие. Т.е. Страна, город, поселеок, улица, дом, квартира. Данные бывают разные.....где нет запятых(а только пробелы), бывает соответственно что и улицы нет(а просто номер дома)....Файл с примером прикрепил. Нужно разбить адрес на ячейки.
Добрый день. Надеюсь поможете. Необходимо разбить адреса на составляющие. Т.е. Страна, город, поселеок, улица, дом, квартира. Данные бывают разные.....где нет запятых(а только пробелы), бывает соответственно что и улицы нет(а просто номер дома)....Файл с примером прикрепил. Нужно разбить адрес на ячейки. Kuradile
Сообщение отредактировал Kuradile - Пятница, 04.11.2016, 10:17
Ответить
Сообщение Добрый день. Надеюсь поможете. Необходимо разбить адреса на составляющие. Т.е. Страна, город, поселеок, улица, дом, квартира. Данные бывают разные.....где нет запятых(а только пробелы), бывает соответственно что и улицы нет(а просто номер дома)....Файл с примером прикрепил. Нужно разбить адрес на ячейки. Автор - Kuradile Дата добавления - 04.11.2016 в 10:15
sv2014
Дата: Пятница, 04.11.2016, 18:50 |
Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация:
61
±
Замечаний:
0% ±
Excel 2013
Kuradile , добрый вечер,у Вас в файл-примере не указано,как надо в столбцах B,C,D,E,F (просьба указать),вариант функций yyy1 в B для страны,bbb в C для города,zzz1 в E для дома,zzz2 в F для квартиры
Function yyy1$(t$)
With CreateObject ("VBScript.RegExp" ): .IgnoreCase = True
.Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)"
yyy1 = .Execute(t)(0 )
End With
End Function
Function bbb$(t$)
With CreateObject ("VBScript.RegExp" ): .IgnoreCase = True
If InStr (1 , t, "г" ) Then
.Pattern = "[а-яё]+ (?:г)"
If .test(t) Then bbb = .Execute(t)(0 ) Else bbb = ""
Else
.Global = True : .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)"
bbb = .Execute(t)(1 )
End If
End With
End Function
Function zzz1$(t$)
With CreateObject ("VBScript.RegExp" )
If InStrRev (t, "кв." ) = False And InStrRev (t, "к." ) = False Then
.Pattern = "д\. ?.+$" : zzz1 = .Execute(t)(0 )
Else
.Pattern = "д\. \d+|д\. ?\d+ ?к?\.?\d+" : zzz1 = .Execute(t)(0 )
End If
End With
End Function
Function zzz2$(t$)
With CreateObject ("VBScript.RegExp" ): .Pattern = "кв\. \d+"
If .test(t) Then zzz2 = .Execute(t)(0 ) Else zzz2 = ""
End With
End Function
Kuradile , добрый вечер,у Вас в файл-примере не указано,как надо в столбцах B,C,D,E,F (просьба указать),вариант функций yyy1 в B для страны,bbb в C для города,zzz1 в E для дома,zzz2 в F для квартиры
Function yyy1$(t$)
With CreateObject ("VBScript.RegExp" ): .IgnoreCase = True
.Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)"
yyy1 = .Execute(t)(0 )
End With
End Function
Function bbb$(t$)
With CreateObject ("VBScript.RegExp" ): .IgnoreCase = True
If InStr (1 , t, "г" ) Then
.Pattern = "[а-яё]+ (?:г)"
If .test(t) Then bbb = .Execute(t)(0 ) Else bbb = ""
Else
.Global = True : .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)"
bbb = .Execute(t)(1 )
End If
End With
End Function
Function zzz1$(t$)
With CreateObject ("VBScript.RegExp" )
If InStrRev (t, "кв." ) = False And InStrRev (t, "к." ) = False Then
.Pattern = "д\. ?.+$" : zzz1 = .Execute(t)(0 )
Else
.Pattern = "д\. \d+|д\. ?\d+ ?к?\.?\d+" : zzz1 = .Execute(t)(0 )
End If
End With
End Function
Function zzz2$(t$)
With CreateObject ("VBScript.RegExp" ): .Pattern = "кв\. \d+"
If .test(t) Then zzz2 = .Execute(t)(0 ) Else zzz2 = ""
End With
End Function
sv2014
Ответить
Сообщение Kuradile , добрый вечер,у Вас в файл-примере не указано,как надо в столбцах B,C,D,E,F (просьба указать),вариант функций yyy1 в B для страны,bbb в C для города,zzz1 в E для дома,zzz2 в F для квартиры [vba]
Function yyy1 $(t $) With CreateObject("VBScript.RegExp"): .IgnoreCase = Тrue .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)" yyy1 = .Execute(t )(0) End WithEnd Function
[/vba] [vba]
Function bbb $(t $)With CreateObject("VBScript.RegExp"): .IgnoreCase = Тrue If InStr(1; t ; "г") Then .Pattern = "[а-яё]+ (?:г)" If .test(t ) Then bbb = .Execute(t )(0) Else bbb = "" Else .Global = Тrue: .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)" bbb = .Execute(t )(1) End IfEnd WithEnd Function
[/vba] [vba]
Function zzz1 $(t $) With CreateObject("VBScript.RegExp") If InStrRev(t , "кв.") = False And InStrRev(t , "к.") = False Then .Pattern = "д\. ?.+$": zzz1 = .Execute(t )(0) Else .Pattern = "д\. \d+|д\. ?\d+ ?к?\.?\d+": zzz1 = .Execute(t )(0) End If End WithEnd Function
[/vba] [vba]
Function zzz2 $(t $)With CreateObject("VBScript.RegExp"): .Pattern = "кв\. \d+"If .test(t ) Then zzz2 = .Execute(t )(0) Else zzz2 = ""End WithEnd Function
[/vba]Автор - sv2014 Дата добавления - 04.11.2016 в 18:50