Excel:多行文本单元格转换成一行文本

6

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

是否有人能够建议一种方法(可以是VBA或Excel命令/方法),将这些每个单元格转换为一行,并在单词之间留有空格。

例如: 当前 单元格1:

  • About
  • Horse
  • Dog

需要: 单元格1:

  • About Horse Dog

非常感谢任何帮助。

5个回答

11

没有使用VBA的情况下:

使用查找和替换功能。

在查找框中,按住ALT并键入0010(回车符的ASCII码为10-您看不到任何内容,但它是一个新行字符)。

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

单击全部替换按钮。


8
尝试使用这个简短的宏:
Sub dural()
    Dim rng As Range
    Set rng = Selection
    rng.Replace what:=Chr(10), lookat:=xlPart, replacement:=" "
End Sub

6
ALT+ENTER会创建一个名为vbLF(用于Visual Basic的换行符)的字符。您只需要将vbLF替换为空格即可,如下所示:
Sub test()
    Dim str As String
    str = Range("A1")
    Debug.Print str
    str = Replace(str, vbLf, " ")
    Debug.Print str
End Sub

放到一个循环中:
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

这只会修复单元格A1。要使用“替换”函数来修复所有单元格,您需要循环遍历所有单元格。 - Tony Dallimore
嗯...是的。只需要将它放在一个for循环中即可。如果您认为有必要,我可以添加它。 - David G
你计时过循环访问4000个单元格的代码吗?作为一次性任务这可能足够,但我认为这不是一个好的方法。 - Tony Dallimore
我承认查找和替换会更快 - 可能在1秒内完成。我的方法可能需要几秒钟。单独来看并没有什么大不了的,但如果它是更大代码的一部分,那么使用查找和替换是更好的选择。 - David G

5
我认为这能满足你的需求:

我认为这个可以达到你的目的:

Sub Macro1()

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

End Sub

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接