首先,VBA新手。
我正在实施这个解决方案how-to-merge-all-column-into-one-cell-in-excel[stackoverflow],但有一个后续。
A1:I
A2:am
A3:a
A4:boy
我的输出是:Iamaboy
但我想在一个单元格中:
I
am
a
boy
函数似乎没有使用vbNewLine
,chr(10)
或chr(13)
返回字符串...
一行代码:
Range("B1").Formula = join(application.transpose(Range("A1:A4")),vblf)
答案是,正如特莱温所说
=ConcatenateRange(A1:A4,CHAR(10))
或者,使用[alt-enter]你可以像这样写
=ConcatenateRange(A1:A4,"
")
“但是等等,”你说,“我试过了,它不起作用!”
好吧,你看,当你在Excel中手动输入像I[alt-enter]am[alt-enter]a[alt-enter]boy
这样的东西,甚至执行[A1] = "I" & vbNewLine & "am"
等语句时,Excel会自动更改单元格格式并打开自动换行。要在单元格中显示换行符需要自动换行。但是,如果从UDF返回包含换行符的字符串,则Excel不会更新格式。
我可以想到两种可能的解决方案:
Application.Caller
中,然后设置Application.OnTime(now, "AddWordWrap")
调用并编写AddWordWrap子例程,以便它使用存储的引用将wordwrap格式添加到单元格(这是因为您无法更新单元格格式在UDF中)。这种方法很麻烦且有问题。只需使用CHAR(10)分隔符:
=ConcatenateRange(A1:A4;CHAR(10))
使用:
=A1&"[Alt+Enter]"&A2&"[Alt+Enter]"&A3&"[Alt+Enter]"&A4
尝试使用这个
Sheet1.Range("A1").Value = "sgar" & Chr(10) & "saha"
Cells(row, column) = "current line" & Chr(10) & "new line"
我坚持使用它,一旦我使用'换行文字'它确实有效。