Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перенос текста в строке ячейки по условию
 
Здравствуйте !

В ячейках таблицы находится текст содержащий символы "//" - двойной слеш
Надо перенести строки перед "//" - обработать текст
Текст всегда начинается с "//"  -  те вида ( "//"Мама мыла раму "//" олролролопоп "//" орпропропорп и тд )
Но как сделать так чтобы именно первый слеш "//" был без переноса, а остальные с переносом Chr(10) ?
В макросе то все слеши переносятся - а как исключить из переноса самый первый в начале текста ?
Код
Dim x As Range
    Set x = Range("J4:J" & Cells(Rows.Count, "J").End(xlUp).Row): x.Replace Chr(10), ""
    x.Replace "//", Chr(10) & "//"
 
См. вариант. Текст в ячейке А1.
Код
Sub qqq()
Dim i As Long, Arr
    Arr = Split(Range("A1"), """//""")
    For i = 1 To UBound(Arr)
        If Range("B1") = "" Then
            Range("B1") = Arr(i)
        Else
            Range("B1") = Range("B1") & Chr(10) & Trim(Arr(i))
        End If
    Next
End Sub
 
Спасибо Юрий - буду пробовать сейчас
 
Код
Sub iTwoSlesh()
Dim mo As Object
Dim n As Integer
 With CreateObject("VBScript.RegExp")
   .Global = True
   .MultiLine = True
   .Pattern = " ""//"" "
     If .test(Cells(1, 1)) Then
       Set mo = .Execute(Cells(1, 1))
         For n = 0 To mo.Count - 1
           Cells(1, 1) = .Replace(Cells(1, 1), mo(n) & Chr(10))
         Next
    End If
 End With
End Sub
Текст в А1
 
Код
Sub Repl_()
    Range("A1").Value = """//""" & Replace(Range("A1").Value, """//""", Chr$(10), 5)
End Sub
 
Код
Sub Replace2Slesh()
  Dim r&: r = 9
  Do While Not IsEmpty(Cells(r, 10))
    Cells(r, 10) = """//""" & Replace(Cells(r, 10), """//""", vbLf & """//""", 5):  r = r + 1
  Loop
End Sub
Изменено: Ігор Гончаренко - 3 Июн 2018 16:08:51
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ничего не получается у меня приладить - лишние обрезания идут и прочее Пример во вложении - так работает но первый слеш тоже переносится в примере - надо чтоб не переносился первый
 
vikttur, а не проще замену начинать с третьего символа?
 
Цитата
Ничего не получается у меня приладить - лишние обрезания идут...
ясен-красен...Вы разницу улавливаете между строками:
"//"Мама мыла раму "//" олролролопоп "//" орпропропорп и тд )
и
//Мама мыла раму // олролролопоп // орпропропорп и тд )
???
Код
Sub Replace2Slesh()
  Dim r&: r = 4
  Do While Not IsEmpty(Cells(r, 10))
    Cells(r, 10) = "//" & Replace(Cells(r, 10), "//", vbLf & "//", 3):   r = r + 1
  Loop
End Sub
понимаете, кроме правил форума я пользуюсь собственными правилами
задумался - не пора-ли взять себе за правило: "нет примера - нечего даже пытаться отвечать", потому что в данных все может быть совсем не так как в тексте вопроса.
Изменено: Ігор Гончаренко - 3 Июн 2018 18:42:43
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко благодарю за помощь - сейчас как надо заработало !
Страницы: 1
Читают тему (гостей: 1)