Как бы я написал макрос, который будет искать определенный символ (в Excel) и заменить его жестким возвратом в той же ячейке и сохранить целостность ячейки?

Я часто конвертирую текстовые документы в Excel и перед конвертированием заменяю все сложные возвраты в текстовом документе знаками решетки (@@), чтобы целостность ячейки поддерживалась функцией вставки в документе Excel (если вы этого не сделаете удалить жесткие возвраты, новая ячейка создается при каждом возврате).

После вставки в Excel мне нужно заменить знаки «@@» на жесткие возвраты, и я не могу найти "жесткий возврат" в качестве выбора в разделе "заменить". Я считаю, что для этого нужен макрос.

Спасибо за любую помощь, которую вы можете оказать.

3 ответа3

0

Это был один из самых популярных хитов в Google, когда я искал "макрос в формате hard wrap text excel" ... поэтому вот мое решение для обтекания ячейки текста по ширине:

Function hardwrap(useThis As Range, WrapAt As Integer) As String
    Dim i As Integer
    Dim Temp As String
    Dim retVal As String
    i = 0
    retVal = useThis.Value
    With useThis
        If Len(.Value) > WrapAt Then
            Temp = retVal
            Do
                i = i + WrapAt
                Do
                    If Mid(Temp, i, 1) = " " Then
                        Temp = Left(Temp, i - 1) & Chr(10) & Right(Temp, Len(Temp) - i)
                        Exit Do
                    Else
                        i = i - 1
                        If i < 0 Then
                            Exit Do
                        End If
                    End If
                Loop
            Loop While i < Len(Temp) - WrapAt
            retVal = Temp
        End If
    End With
    hardwrap = retVal
End Function

Этот код в значительной степени основан на этой функции Эндрю Пулсома, найденного здесь: http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

В основном, если строка длиннее, чем перенос в переменной, она переходит вперед к точке переноса и движется назад в поисках пробелов. Когда он находит его, он заменяет это место новой строкой. Затем это повторяется для баланса строки.

Моя версия немного более общая (ИМХО).

Пример:

A1:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

A2: =hardwrap(A1,40)

"Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est
laborum."

Надеюсь, это поможет.

0

Для короткого макроса:

Sub DoubleAt()
    Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub
0

Вы можете сделать это с помощью опции поиска и замены.
Измените текст своей ячейки на: = "this @@ is @@ your @@ cell @@ text".

Затем найдите и замените и замените @@ (или все, что вы хотите заменить) на "& char (10) &". Это изменит ваш вывод с "this @@ is @@ your @@ cell @@ text" на "this is your cell text".

Теперь вам нужно отформатировать ячейки, чтобы включить перенос слов (щелкните правой кнопкой мыши> формат> вкладка выравнивания> проверить перенос слов). Ваш новый вывод должен быть:
это
является
ваш
клетка
текст

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .