【发布时间】:2015-10-23 07:54:54
【问题描述】:
我有大约 4000 个单元格,每个单元格大约有 4 行单独的文本。每一行文本都是使用 ALT+ENTER 方法输入的。
任何人都可以提出一种方法,无论是 VBA 还是 Excel 命令/方法,将这些单元格中的每一个转换为一行,单词之间有空格。
示例: 当前的 单元格 1:
- 关于
- 马
- 狗
需要: 单元格 1:
- 关于马狗
非常感谢任何帮助
【问题讨论】:
我有大约 4000 个单元格,每个单元格大约有 4 行单独的文本。每一行文本都是使用 ALT+ENTER 方法输入的。
任何人都可以提出一种方法,无论是 VBA 还是 Excel 命令/方法,将这些单元格中的每一个转换为一行,单词之间有空格。
示例: 当前的 单元格 1:
需要: 单元格 1:
非常感谢任何帮助
【问题讨论】:
要在没有 VBA 的情况下执行此操作:
使用查找和替换。
在查找内容框中,按住 ALT 并输入 0010
(换行的 ASCII 码是 10 - 你什么都看不到,但它是一个换行符)。
在替换框中,只需键入空格字符或任何分隔符。
点击Replace all按钮。
【讨论】:
试试这个简短的宏:
Sub dural()
Dim rng As Range
Set rng = Selection
rng.Replace what:=Chr(10), lookat:=xlPart, replacement:=" "
End Sub
【讨论】:
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
【讨论】:
Replace 修复所有单元格,您需要遍历所有单元格。
在您最喜欢的浏览器上进行一些搜索: https://www.ablebits.com/office-addins-blog/2013/12/03/remove-carriage-returns-excel/
如果是“一次性”,则无需创建 VBA 宏。用空格替换回车,就可以完成了
【讨论】:
我认为这会做你想要的:
Sub Macro1()
Cells.Replace What:=vbLf, Replacement:=" ", LookAt:=xlPart
End Sub
【讨论】: