首页 > 解决方案 > Excel:使用 IF 语句连接单元格和文本

问题描述

我正在尝试组合几个数据单元。我的问题是在数据之间放置空格,更重要的是在没有数据时不要放置空格,所以我不会得到双空格。这是一个示例:

=TRIM(M12)&IF(N12<>M12;"-"&TRIM(N12);"")&" "&TRIM(G12)&" "&TRIM(H12)&IF(LEN(I12>0);" "&TRIM(I12)&" ")&TRIM(J12)

数据是开始年份 (M)、结束年份 (N)、品牌 (G)、型号 (H)、车身样式 (I)、传动系统 (J)。

对于某些开始年份和结束年份的值是相同的。

&IF(N12<>M12;"-"&TRIM(N12);"")

这完美地工作。如果结束年份与开始年份相同,则不会在之后添加 - 或空格。

对于许多行,正文样式没有价值。

&IF(LEN(I12>0);" "&TRIM(I12)&" ")

如果它存在,这将打印正文样式,但如果正文样式没有值,它总是添加一个双倍空格。

当我将该引用更改为:

 &IF(LEN(I12>0);"-"&TRIM(I12)&"+")

无论 I12 中有什么, - 和 + 都会打印

我尝试了很多变化。没有工作,有些抛出错误。可能很明显,我不知道我在 Excel 中在做什么,但我认为必须有更好的方法来检查单元格 I12?我尝试了 >1 但没有运气,但我不确定除了其中的数据长度之外还要检查什么。

标签: excelconcatenation

解决方案


TRIM函数不仅删除了前导和尾随空格,而且还将任何内部的多个空格序列减少到一个空格。通过包装整个公式,TRIM(..)您可以忽略创建双空格的可能性。

关于

当我将该引用更改为:

&IF(LEN(I12>0);"-"&TRIM(I12)&"+")
无论里面有什么,-都可以打印+I12

这表明I12实际上有一个或多个空格。通过使用修复它LEN(TRIM(I12))>0

或者更好的是,继续连接I12TRIM清理空间。

注意:我假设该IF(LEN(I12>0);"-"&TRIM(I12)&"+")版本只是为了测试那段代码,所以没有添加-+.

所以,你的整个公式可以变成

=TRIM(M17&IF(M17<>N17;"-"&TRIM(N17);"")&" "&G17&" "&H17&" "&I17&" "&J17)

如果您有支持的 Excel 版本,TEXTJOIN则可以使用

=TRIM(M16&IF(M16<>N16,"-"&TRIM(N16),"")&" "&TEXTJOIN(" ",TRUE,G16:J16))

推荐阅读