Добрый день. Надеюсь поможете. Необходимо разбить адреса на составляющие. Т.е. Страна, город, поселеок, улица, дом, квартира. Данные бывают разные.....где нет запятых(а только пробелы), бывает соответственно что и улицы нет(а просто номер дома)....Файл с примером прикрепил. Нужно разбить адрес на ячейки.
Добрый день. Надеюсь поможете. Необходимо разбить адреса на составляющие. Т.е. Страна, город, поселеок, улица, дом, квартира. Данные бывают разные.....где нет запятых(а только пробелы), бывает соответственно что и улицы нет(а просто номер дома)....Файл с примером прикрепил. Нужно разбить адрес на ячейки.Kuradile
Kuradile, добрый вечер,у Вас в файл-примере не указано,как надо в столбцах B,C,D,E,F (просьба указать),вариант функций yyy1 в B для страны,bbb в C для города,zzz1 в E для дома,zzz2 в F для квартиры
[vba]
Код
Function yyy1$(t$) With CreateObject("VBScript.RegExp"): .IgnoreCase = True .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)" yyy1 = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
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
[/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 With End Function
[/vba] [vba]
Код
Function zzz2$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "кв\. \d+" If .test(t) Then zzz2 = .Execute(t)(0) Else zzz2 = "" End With End Function
[/vba]
Kuradile, добрый вечер,у Вас в файл-примере не указано,как надо в столбцах B,C,D,E,F (просьба указать),вариант функций yyy1 в B для страны,bbb в C для города,zzz1 в E для дома,zzz2 в F для квартиры
[vba]
Код
Function yyy1$(t$) With CreateObject("VBScript.RegExp"): .IgnoreCase = True .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)" yyy1 = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
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
[/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 With End Function
[/vba] [vba]
Код
Function zzz2$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "кв\. \d+" If .test(t) Then zzz2 = .Execute(t)(0) Else zzz2 = "" End With End Function