用于在 Excel 中用硬回车替换文本的宏

用于在 Excel 中用硬回车替换文本的宏

我该如何编写一个宏来搜索特定符号(在 Excel 中)并用同一单元格中的硬回车替换它并保持单元格完整性?

我经常将 word 文档转换为 excel,并且在转换之前,我将 word 文档中的所有硬回车替换为井号 (@@),以便在 excel 文档中的粘贴功能上保持单元格完整性(如果不删除硬回车,则每次回车时都会创建一个新的单元格)。

粘贴到 excel 后,我需要用硬回车替换“@@”符号,但在“替换”下找不到“硬回车”选项。我相信需要一个宏来做到这一点。

谢谢你提供的所有帮助。

答案1

您实际上可以使用查找和替换选项来执行此操作。
将您的单元格文本更改为:“this @@ is @@ your @@ cell @@ text”。

然后去查找并替换并将 @@(或任何您想要替换的内容)替换为“ & char(10) & ”。这会将您的输出从“这个 @@ 是 @@ 你的 @@ 单元格 @@ 文本”更改为“这是您的单元格文本”。

现在您需要格式化单元格以启用自动换行(右键单击 > 格式 > 对齐选项卡 > 选中自动换行)。您的新输出应为:


您的
单元格
文本

答案2

对于简短的宏:

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

答案3

当我在谷歌搜索“硬换行文本 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

该代码主要基于 Andrew Poulsom 提供的以下函数:http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

基本上,如果字符串比变量处的换行符长,它会跳转到换行符处,然后向后查找空格。找到空格后,它会用换行符替换该空格。然后重复此操作以查找字符串的其余部分。

我的版本更加通用(恕我直言)。

例子:

答案1:

"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."

希望有所帮助。

相关内容