7

首先,VBA 新手。

我正在实施这个解决方案how-to-merge-all-column-to-one-cell-in-excel[stackoverflow],但有后续。

A1:I
A2:am
A3:a
A4:boy

我的输出是:Iamaboy但我想在一个单元格中:

I
am
a
boy

函数似乎不返回带有vbNewLine,chr(10)chr(13)...

4

7 回答 7

3

一行代码:

Range("B1").Formula = join(application.transpose(Range("A1:A4")),vblf)
于 2015-06-01T00:26:57.040 回答
2

答案是,正如 tlewin 所说

=ConcatenateRange(A1:A4,CHAR(10))

或者,使用 [alt-enter] 你可以这样写

=ConcatenateRange(A1:A4,"
")

“但是等等,”你说,“我试过了,但它不起作用!”
好吧,您会看到,当您I[alt-enter]am[alt-enter]a[alt-enter]boy在 Excel 中手动输入内容时,甚至执行诸如[A1] = "I" & vbNewLine & "am"Excel 之类的语句时,会自动更改单元格格式并打开自动换行。要在单元格中显示换行符,需要自动换行。但是,如果您从 UDF 返回带有换行符的字符串,Excel 不会更新格式。

我可以想到两种可能的解决方案:

  1. 在您使用此功能的任何单元格上手动启用自动换行
  2. (不推荐)Application.Caller在 ConcatenateRange UDF 调用期间存储引用,然后设置Application.OnTime(now, "AddWordWrap")调用并编写 AddWordWrap 子例程,以便它使用存储的引用将自动换行格式添加到单元格(这是因为您无法在UDF)。这种方法是错误的和有问题的。
于 2013-11-12T17:32:53.260 回答
0

只需使用 CHAR(10) 分隔符:

=ConcatenateRange(A1:A4;CHAR(10))
于 2013-06-11T20:59:26.253 回答
0

尝试使用这个

Sheet1.Range("A1").Value = "sgar" & Chr(10) & "saha"
于 2014-08-19T14:18:17.050 回答
0

利用:

=A1&"[Alt+Enter]"&A2&"[Alt+Enter]"&A3&"[Alt+Enter]"&A4
于 2013-11-04T04:18:23.000 回答
0
Cells(row, column) = "current line" & Chr(10) & "new line"
于 2017-12-27T05:39:19.280 回答
-1

我把它卡住了,一旦我使用了“换行文本”,它就可以工作了。

于 2013-06-12T07:16:49.717 回答