Бьюсь второй день над задачкой , как перевернуть текст в ячейке так, чтобы фразы между запятыми исходной ячейки шли в обратном порядке в новой ячейке. НО при этом, чтобы сохранялись ЦВЕТА шрифтов внутри фраз (см картинку).
Я смог написать только упрощенный макрос , где цвет шрифтов у перевернутых фраз окрашивается в цвет самой первой буквы этой фразы...
Ума не приложу как сделать такой результать , который требуется на картинке. То есть, как вытянуть цвет каждой буквы в отдельности я понимаю, но как потом раскрасить перевернутые фразы - завис...
Если у кого-то будут идеи, буду благодарен за наводку. Спасибо.
Всем привет.
Бьюсь второй день над задачкой , как перевернуть текст в ячейке так, чтобы фразы между запятыми исходной ячейки шли в обратном порядке в новой ячейке. НО при этом, чтобы сохранялись ЦВЕТА шрифтов внутри фраз (см картинку).
Я смог написать только упрощенный макрос , где цвет шрифтов у перевернутых фраз окрашивается в цвет самой первой буквы этой фразы...
Ума не приложу как сделать такой результать , который требуется на картинке. То есть, как вытянуть цвет каждой буквы в отдельности я понимаю, но как потом раскрасить перевернутые фразы - завис...
Если у кого-то будут идеи, буду благодарен за наводку. Спасибо. t330
Если запятых, разделяющих текст всегда 3, то можно попробовать так [vba]
Код
Sub iColorReverse() Dim arr Dim i As Long Dim mo As Object Dim l_1 As Integer, l_2 As Integer, l_3 As Integer, l As Integer Dim n As Long arr = Application.Trim(Split(Range("A1"), ",")) Range("B1").ClearContents Range("B1").Font.ColorIndex = 1 For i = UBound(arr) To 1 Step -1 Range("B1") = Range("B1") & arr(i) & ", " Next Range("B1") = Left(Range("B1"), Len(Range("B1")) - 2) With CreateObject("VBScript.RegExp") .Global = True .Pattern = "," Set mo = .Execute(Range("A1")) l_1 = mo(0).firstIndex + 1 'позиция первой запятой l_2 = mo(1).firstIndex + 1 'второй l_3 = mo(2).firstIndex + 1 'третьей l = Len(Range("A1")) End With n = 1 For i = l_3 + 2 To l Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next n = n + 2 For i = l_2 + 2 To l_3 - 1 Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next n = n + 2 For i = l_1 + 2 To l_2 - 1 Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next n = n + 2 For i = 1 To l_1 - 1 Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next End Sub
[/vba]
Цитата
как потом раскрасить перевернутые фразы
Если запятых, разделяющих текст всегда 3, то можно попробовать так [vba]
Код
Sub iColorReverse() Dim arr Dim i As Long Dim mo As Object Dim l_1 As Integer, l_2 As Integer, l_3 As Integer, l As Integer Dim n As Long arr = Application.Trim(Split(Range("A1"), ",")) Range("B1").ClearContents Range("B1").Font.ColorIndex = 1 For i = UBound(arr) To 1 Step -1 Range("B1") = Range("B1") & arr(i) & ", " Next Range("B1") = Left(Range("B1"), Len(Range("B1")) - 2) With CreateObject("VBScript.RegExp") .Global = True .Pattern = "," Set mo = .Execute(Range("A1")) l_1 = mo(0).firstIndex + 1 'позиция первой запятой l_2 = mo(1).firstIndex + 1 'второй l_3 = mo(2).firstIndex + 1 'третьей l = Len(Range("A1")) End With n = 1 For i = l_3 + 2 To l Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next n = n + 2 For i = l_2 + 2 To l_3 - 1 Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next n = n + 2 For i = l_1 + 2 To l_2 - 1 Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next n = n + 2 For i = 1 To l_1 - 1 Range("B1").Characters(n, 1).Font.ColorIndex = Range("A1").Characters(i, 1).Font.ColorIndex n = n + 1 Next End Sub