Страницы: 1
RSS
Вставить пробелы перед заглавными буквами
 
Мне нужно, чтобы добавить пробел перед буквами.
вопрос:
1-BmwSkodaFerrariRenault
2-MercedesMitsubishi

Ответы (я хочу)
1-Bmw Skoda Ferrari Renault
2-Mercedes Mitsubishi

Данные могут быть длиннее.
Мне нужно сделать с формулой.
Спасибо,
 
liny1, какой язык для Вас родной?
 
Syria,
Моя страна из Excel Нет информации :(
 
Тогда понятно. Исправил название темы)
 
Формулами не умею. Могу макросом)
 
Формулами это очень муторно делать. Можно UDF
Код
Function AddSpace(S As String) As String
Dim I, L As Integer: L = Len(S)
Dim aStr As String
If L < 2 Then Exit Function
AddSpace = Left(S, 1)
For I = 2 To L
aStr = Mid(S, I, 1)
If aStr Like "[A-Z]" Then aStr = " " & aStr
AddSpace = AddSpace & aStr
Next I
End Function

 
Еще вариант для разнообразия:
Код
Function InsSpace(rng As Range) As String
    Dim s As String, i As Integer, x, y
    Set x = CreateObject("VBScript.RegExp"): x.Pattern = "[A-Z]": x.Global = True
    s = rng.Value: Set y = x.Execute(s)
    For i = 0 To y.Count - 1: s = Replace(s, y.Item(i), " " & y.Item(i)): Next
    InsSpace = Application.Trim(s)
End Function
Чем шире угол зрения, тем он тупее.
 
кто-нибудь проверял свои варианты? :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
У меня вариант #7 работает.
Неизлечимых болезней нет, есть неизлечимые люди.
 
в точности как хотел автор вопроса? т.е. после символа "-" пробел не вставляется? :)
Изменено: ikki - 12.05.2015 08:52:20
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
замутил формулами с доп столбцами
Лень двигатель прогресса, доказано!!!
 
доработка по замечанию ikki,
Код
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;E1;" "&E1);C1;" "&C1);D1;" "&D1);B1;" "&B1);"- ";"-")
Лень двигатель прогресса, доказано!!!
 
Сергей, это не замечание.
просто интересно - это невнимательность автора или ему реально именно так надо? :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
ikki написал:
"-" пробел не вставляется
Такого автор не требовал. ИМХО 1- и 2- этого реально в ячейках не должно быть. А где собственно сам автор?
Код
...
InsSpace = Replace(Application.Trim(s),"- ","-")
...
Изменено: TheBestOfTheBest - 12.05.2015 09:44:51
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
TheBestOfTheBest написал: ИМХО 1- и 2- этого реально в ячейках не должно быть.
да, вполне возможно.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Ну пока ясно написано -
было
1-BmwSkoda...
нужно
1-Bmw Skoda...
Какие вопросы?
А чтоб не гадать - для того написаны правила.
И есть ведь такая марка как Rolls-Royce :)
А заменять "- " на "-" в общем случае неправильно, мало ли что там может быть. Файла то нет!
 
Тогда можно так, список символов-исключений задается строкой Ex
Код
Function AddSpace(S As String, Optional Ex As String = "-") As String
Dim I, L As Integer: L = Len(S)
Dim aStr As String
Dim Ok As Boolean
If L < 2 Then Exit Function
AddSpace = Left(S, 1)
For I = 2 To L
aStr = Mid(S, I, 1)
If aStr Like "[A-Z]" And Ok Then aStr = " " & aStr
AddSpace = AddSpace & aStr
Ok = InStr(Ex, aStr) = 0
Next I
End Function

 
Здравствуйте,
Спасибо за ответ.
Я нашел подобные вопросы. Формула улучшить?
Связанные темы
Hugo,
Образец данных не является реальным.
Изменено: liny1 - 12.05.2015 18:32:13
 
Мой вариант (нагородил как всегда) :D
 
Цитата
liny1 написал: Образец данных не является реальным.
Тогда тем более куда торопиться код писать...
Страницы: 1
Читают тему
Наверх