Да, так-то правильно, но так адреса править вряд ли возможно. Это мне надо для сличения адресов из разных реестров с помощью Fuzzy Lookup. Где-то написано Маяковского д7А, а мне надо, чтобы было Маяковского д 7 А
nilske написал: во втором реестре пробелы убирайте
так себе получится, насколько я знаю эту надстройку. Isa Balaev, Вы бы озвучили какие средства доступны для решения: только формулы, макросы, Power Query. Т.к. начнут сейчас предлагать решения и начнется: а макросы нельзя, а Power Query неудобно и т.п.
Формулой точно фигня может получиться стоэтажная. Макросом как-то проще получается. Вот UDF:
Код
Function SplitByNum(sTxt$)
Dim s$, snum$, sres$
Dim li&, le&
For li = Len(sTxt) To 1 Step -1
s = Mid(sTxt, li, 1)
snum = ""
If IsNumeric(s) Then
le = li
If li = 1 Then
snum = s & " "
End If
Else
If le > 0 Then
snum = Mid(sTxt, li + 1, le - li + 1)
snum = s & " " & snum & " "
le = 0
Else
snum = s
End If
End If
sres = snum & sres
Next
SplitByNum = Application.Trim(sres)
End Function
может не самая оптимальная - не особо-то старался красиво сделать Но должно работать. Т.к. для примера только один адрес - проверил тоже только на нем.
Sub DigitLetter()
Dim i As Long
Dim iLastRow As Long
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "(\d+)"
For i = 1 To iLastRow
If .Test(Cells(i, 1)) Then
Cells(i, 2) = WorksheetFunction.Trim(.Replace(Cells(i, 1), " $& "))
End If
Next
End With
End Sub