Страницы: 1
RSS
Через каждые N символов вставить знак (любой) VBA
 
Добрый день!
Прошу помочь в решение простой на взгляд задачки средствами VBA
Есть текст "11r222333444", через каждые 3 символа нужно вставить, допустим "."
Итого должно получится "11r.222.333.444"
Спасибо!
 
Отсчет сначала или с конца?
 
OblivionR, если строки фиксированной длины
Код
?format("11r222333444","@@@.@@@.@@@.@@@")
11r.222.333.444
 
V, с начала.
Тут вся суть в том, чтобы независимо от кол-ва символов вставлялся знак.

К примеру S=mid(s,1,3) & “.” & mid(s,4,3) & “.” & mid(s,7,3) не рассматривается  
 
Скрытый текст

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, супер спасибо.
Так же решал, а вот до строчки
sResultString = Left(sResultString, Len(sResultString) - 1)

не додумался.....(
 
Код
Function AddChar$(Base$, Char$, Step&)
  Dim p&:  AddChar = Mid(Base, 1, Step):  p = Step + 1
  Do While p <= Len(Base)
    AddChar = AddChar & Char & Mid(Base, p, Step): p = Step + p
  Loop
End Function

Sub Test()
  MsgBox AddChar("1234567890123456", "-", 3)
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Развитие идеи из #3
Код
Function DotAfterThree(s)
  DotAfterThree = Format(s, Replace(Space((Len(s) - 1) \ 3), " ", "@@@."))
End Function

Sub test()
Dim i&
  For i = 0 To 20
    Debug.Print i, DotAfterThree(String(i, "a"))
  Next
End Sub
Код
 0            
 1            a
 2            aa
 3            aaa
 4            aaa.a
 5            aaa.aa
 6            aaa.aaa
 7            aaa.aaa.a
 8            aaa.aaa.aa
 9            aaa.aaa.aaa
 10           aaa.aaa.aaa.a
 11           aaa.aaa.aaa.aa
 12           aaa.aaa.aaa.aaa
 13           aaa.aaa.aaa.aaa.a
 14           aaa.aaa.aaa.aaa.aa
 15           aaa.aaa.aaa.aaa.aaa
 16           aaa.aaa.aaa.aaa.aaa.a
 17           aaa.aaa.aaa.aaa.aaa.aa
 18           aaa.aaa.aaa.aaa.aaa.aaa
 19           aaa.aaa.aaa.aaa.aaa.aaa.a
 20           aaa.aaa.aaa.aaa.aaa.aaa.aa

 
Решал еще данный вопрос формулой, но ВБА будет гораздо удобнее))
Код
=ЕСЛИ(ДЛСТР(A1)<10;("0."&ПСТР(A1;1;3))&"."&ПСТР(A1;ДЛСТР((ПСТР(A1;1;3)))+1;3)&"."&ПСТР(A1;ДЛСТР((ПСТР(A1;1;6)))+1;3);(ПСТР(A1;1;1)&"."&ПСТР(A1;2;3)&"."&ПСТР(A1;5;3)&"."&ПСТР(A1;8;3)))
Страницы: 1
Наверх