关于vba:Excel:将多行文本合并为一行文本

Excel: Cell with multiple lines of text into one line of text

我大约有4000个单元格,每个单元格都有大约4行单独的文本。 每行文本已使用ALT + ENTER方法输入。

任何人都可以提出一种方法,无论是VBA还是Excel命令/方法,都可以将这些单元格中的每一个转换为一行,并在单词之间使用空格。

例:
当前
单元格1:

  • 关于

需要:
单元格1:

  • 关于马狗

任何帮助深表感谢


要在没有VBA的情况下执行此操作:

使用查找和替换。

在"查找内容"框中,按住ALT并键入0010
(换行的ASCII码为10-您将看不到任何内容,但这是换行符)。

在替换框中,只需键入一个空格字符或任何定界符。

单击Replace all按钮。


试试这个简短的宏:

1
2
3
4
5
Sub dural()
    Dim rng As Range
    Set rng = Selection
    rng.Replace what:=Chr(10), lookat:=xlPart, replacement:=""
End Sub

ALT + ENTER创建一个称为vbLF的字符(用于视觉基本换行)。 您只需要将vbLF替换为一个空格,如下所示:

1
2
3
4
5
6
7
Sub test()
    Dim str As String
    str = Range("A1")
    Debug.Print str
    str = Replace(str, vbLf,"")
    Debug.Print str
End Sub

要将其循环放置:

1
2
3
4
5
6
7
8
9
10
11
Sub test()
    dim i as integer
    Dim str As String

    for i = 1 to 10 '(however many you want, can also be dynamic - use XlUp if you want to)
       str = Range("A" & i)
       Debug.Print str
       str = Replace(str, vbLf,"")
       Debug.Print str
    next
End Sub


我认为这将满足您的要求:

1
2
3
4
5
Sub Macro1()

    Cells.Replace What:=vbLf, Replacement:="", LookAt:=xlPart

End Sub

在您喜欢的浏览器上进行一些搜索:

How to remove carriage returns (line breaks) from cells in Excel 2016, 2013, 2010

如果是"一次性",则无需创建VBA宏。 用空格替换回车,然后完成工作