Здравствуйте, боги excel! Вроде простая задача, никак не найду решения, если оно есть...
Есть столбец с наименованиями, в нем встречаются слипшиеся буквы и знаки с числами. Мне нужно вставить между числом и буквой(знаком) пробел.
Здравствуйте, боги excel! Вроде простая задача, никак не найду решения, если оно есть...
Есть столбец с наименованиями, в нем встречаются слипшиеся буквы и знаки с числами. Мне нужно вставить между числом и буквой(знаком) пробел.Studentka86
но не для формул. UDF или макрос, справится на ура. но не формульный вариант
[vba]
Код
Function NumbersSeparate(strVal As String) As String Dim strC As String, strP As String, strN As String Dim res As String, i As Long For i = 2 To Len(strVal) - 1 strC = Mid(strVal, i, 1) strP = Mid(strVal, i - 1, 1) strN = Mid(strVal, i + 1, 1) If strC >= "0" And strC <= "9" Then If (strP < "0" Or strP > "9") And strP <> " " Then res = res & " " res = res & strC If (strN < "0" Or strN > "9") And strN <> " " Then res = res & " " Else res = res & strC End If Next NumbersSeparate = Left(strVal, 1) & res & Right(strVal, 1) End Function
[/vba]
или так
[vba]
Код
Function NumbersSeparate(strVal As String) As String Dim strC As String, strN As String Dim res As String, i As Long For i = 1 To Len(strVal) - 1 strC = Mid(strVal, i, 1) strN = Mid(strVal, i + 1, 1) res = res & strC If (strC >= "0" And strC <= "9" And (strN < "0" Or strN > "9")) Or _ (strN >= "0" And strN <= "9" And strC <> " " And (strC < "0" Or strC > "9")) Then _ res = res & " " Next NumbersSeparate = res & Right(strVal, 1) End Function
но не для формул. UDF или макрос, справится на ура. но не формульный вариант
[vba]
Код
Function NumbersSeparate(strVal As String) As String Dim strC As String, strP As String, strN As String Dim res As String, i As Long For i = 2 To Len(strVal) - 1 strC = Mid(strVal, i, 1) strP = Mid(strVal, i - 1, 1) strN = Mid(strVal, i + 1, 1) If strC >= "0" And strC <= "9" Then If (strP < "0" Or strP > "9") And strP <> " " Then res = res & " " res = res & strC If (strN < "0" Or strN > "9") And strN <> " " Then res = res & " " Else res = res & strC End If Next NumbersSeparate = Left(strVal, 1) & res & Right(strVal, 1) End Function
[/vba]
или так
[vba]
Код
Function NumbersSeparate(strVal As String) As String Dim strC As String, strN As String Dim res As String, i As Long For i = 1 To Len(strVal) - 1 strC = Mid(strVal, i, 1) strN = Mid(strVal, i + 1, 1) res = res & strC If (strC >= "0" And strC <= "9" And (strN < "0" Or strN > "9")) Or _ (strN >= "0" And strN <= "9" And strC <> " " And (strC < "0" Or strC > "9")) Then _ res = res & " " Next NumbersSeparate = res & Right(strVal, 1) End Function
Доброе время суток. Версия udf-функции на регулярных выражениях [vba]
Код
Public Function separateNumbers(ByVal inText As String) As String Static FReg As Object If FReg Is Nothing Then Set FReg = CreateObject("VBScript.RegExp") FReg.Pattern = "([^ \d](?=\d)|\d(?=[^ \d]))" FReg.Global = True End If separateNumbers = FReg.Replace(inText, "$1 ") End Function
[/vba]
Доброе время суток. Версия udf-функции на регулярных выражениях [vba]
Код
Public Function separateNumbers(ByVal inText As String) As String Static FReg As Object If FReg Is Nothing Then Set FReg = CreateObject("VBScript.RegExp") FReg.Pattern = "([^ \d](?=\d)|\d(?=[^ \d]))" FReg.Global = True End If separateNumbers = FReg.Replace(inText, "$1 ") End Function
Так процент совпадения выше, но там и в исходном двойные пробелы, ну если они нужны, то тогда конечно хвост ",))," @ ","@")," @","@"),"@ ","@"),"@"," "), разве что с заменой "@" на Char(1) Все от дальнейшей задачи. ля чего это отделение было нужно.
я TRIM оставил на прежнем месте возможно возможно и зря
Так процент совпадения выше, но там и в исходном двойные пробелы, ну если они нужны, то тогда конечно хвост ",))," @ ","@")," @","@"),"@ ","@"),"@"," "), разве что с заменой "@" на Char(1) Все от дальнейшей задачи. ля чего это отделение было нужно.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Все от дальнейшей задачи. ля чего это отделение было нужно.
Даже не ожидала, что моя проблема вызовет такой отклик и даже дискуссию. Двойные, тройные, пятерные пробелы не помеха для дальнейшей задачи С удовольствием пользуюсь UDF, уж очень их люблю Но формульный вариант это восторг!
Все от дальнейшей задачи. ля чего это отделение было нужно.
Даже не ожидала, что моя проблема вызовет такой отклик и даже дискуссию. Двойные, тройные, пятерные пробелы не помеха для дальнейшей задачи С удовольствием пользуюсь UDF, уж очень их люблю Но формульный вариант это восторг! Studentka86