【问题标题】:Excel: Concatenating cells & text using IF statementsExcel:使用 IF 语句连接单元格和文本
【发布时间】:2020-10-20 20:55:38
【问题描述】:

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

=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 但没有运气,但我不确定除了其中的数据长度之外还要检查什么。

【问题讨论】:

  • 为什么不只是TRIM 整个输出?
  • 你的)放错地方了,别忘了False里的"":&amp;IF(LEN(I12)&gt;0;"-"&amp;TRIM(I12)&amp;"+";"")

标签: excel concatenation


【解决方案1】:

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

关于

当我将该引用更改为:

&amp;IF(LEN(I12&gt;0);"-"&amp;TRIM(I12)&amp;"+")
无论I12 中有什么内容,- 和 + 都会打印出来

这表明I12 实际上有一个或多个空格。使用LEN(TRIM(I12))&gt;0修复该问题

或者更好,直接连接 I12 并让 TRIM 清理空间。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 2019-01-22
    • 2017-10-24
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    相关资源
    最近更新 更多