Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中使用VBA将文本拆分为几行(单元格内)_Vba_Excel - Fatal编程技术网

在Excel中使用VBA将文本拆分为几行(单元格内)

在Excel中使用VBA将文本拆分为几行(单元格内),vba,excel,Vba,Excel,我正在使用Excel为我的数据生成汇总报告。我希望每个夏天都显示在一个单元格中。我使用VBA,得到了如下结果: 我希望能够像这样显示数据: 所有行均应以“增加”或“减少”开头。如何在VBA中执行此操作?(我有许多单元格,如本例中的单元格)如何浏览特定单元格中的文本,并在每个单词后添加新行 如果您试图修复宏,以便它将来正确格式化行,那么您需要通过将元素与vbLf连接在一起来添加换行符(我自己使用CrLf,但对于单元格,Excel只关心换行符) 我感谢@retailcoder指出vbNewLin

我正在使用Excel为我的数据生成汇总报告。我希望每个夏天都显示在一个单元格中。我使用VBA,得到了如下结果:

我希望能够像这样显示数据:


所有行均应以“增加”或“减少”开头。如何在VBA中执行此操作?(我有许多单元格,如本例中的单元格)如何浏览特定单元格中的文本,并在每个单词后添加新行

如果您试图修复宏,以便它将来正确格式化行,那么您需要通过将元素与vbLf连接在一起来添加换行符(我自己使用CrLf,但对于单元格,Excel只关心换行符)

我感谢@retailcoder指出vbNewLine==vbCrLf,所以您可以使用对您更有意义的选项

比如Range.Value=“line 1”&vbcrlf&“line 2”&vbcrlf&“line 3”等:

或者,我个人更喜欢通过循环或使用Join()构造文本:

要在新行中实际显示,您需要使用
Range.WrapText=True


然而,我意识到一种解释是,你只想快速修复工作表上已有的内容。如果是这种情况,只需手动查找单词“增加”或“减少”,并分别用
Char(10)rease
Char(10)reduce
替换,其中Char(10)是通过按Alt+Numpad 0010或通过粘贴公式
=Char(10)
得到的结果值。然后使用公式删除第一个字符。

如果您试图修复宏,以便它在将来正确格式化行,则需要通过将元素与vbLf连接在一起,添加换行符(我自己使用CrLf,但对于单元格,Excel只关心换行符)

我感谢@retailcoder指出vbNewLine==vbCrLf,所以您可以使用对您更有意义的选项

比如Range.Value=“line 1”&vbcrlf&“line 2”&vbcrlf&“line 3”等:

或者,我个人更喜欢通过循环或使用Join()构造文本:

要在新行中实际显示,您需要使用
Range.WrapText=True


然而,我意识到一种解释是,你只想快速修复工作表上已有的内容。如果是这种情况,只需手动查找单词“增加”或“减少”,并分别用
Char(10)rease
Char(10)reduce
替换,其中Char(10)是通过按Alt+Numpad 0010或通过粘贴公式
=Char(10)
得到的结果值。然后使用公式删除第一个字符。

yep这将有效(假设com1等是您构建的表示“增加X%”的行)。不管最后一行是什么,您都不需要vbLf。请注意,“回车符”+“换行符”(
vbCrLf
)也可以用可读性更高的
vbNewLine
)来引用。好的,谢谢,现在让我们假设我使用这个:Selection=com1&vbLf&com2&vbLf&com3&vbLf com4,如果其中一个元素不存在(例如,如果我使用一个条件),那么我会得到一个空行/如何避免它?要正确地做到这一点(有
IIF
in-line if的变通方法,但它们不会覆盖所有场景,并且您可能会得到一个尾随的新行)使用循环:
对于数组中的每一行(第1行、第2行、第3行):if-line“”然后text=text&line&vbcrlf:下一行:text=left(text,len(text)-1)`去掉尾随的vbcrlf
。或者你可以使用IIF来消除循环的需要,但这需要更多的输入!实际上它说的是
text=left(text,len(text)-1)
它应该说
text=left(text,len(text)-len(vbcrlf))
是的,这会起作用(假设com1等是您构建的表示“增加X%”的行)。但无论最后一行是什么,您都不需要vbLf。请注意,“回车符”+“换行符”(
vbCrLf
)也可以用可读性更高的
vbNewLine
引用。好的,谢谢你,让我们假设我现在使用这个:Selection=com1&vbLf&com2&vbLf&com3&vbLf-com4如果其中一个元素不存在(例如,如果我使用条件),那么我会得到一个空行/我如何避免它?正确地执行它(对于
IIF
行内if有一些变通方法,但它们不能覆盖所有场景,并且您可能会得到一个尾随的新行)对数组中的每一行使用循环:
(第1行,第2行,第3行):如果行“”,则text=text&line&vbcrlf:下一行:text=left(text,len(text)-1)'去掉尾随的vbcrlf
。或者,您可以使用IIF来消除对循环的需要,但这需要更多的键入!实际上,当它说
text=left(text,len(text)-1)
时,应该说
text=left(text,len(text)-len(vbcrlf))
Range.Value = _
    "line 1" & vbcrlf & _
    "line 2" & vbcrlf & _
    "line 3" 
Range.Value = Join(Array( _
    "Line 1", _
    "Line 2", _
    "Line 3"), vbCrLf)