【问题标题】:Squeeze a CONCATENATE up if field is empty, so space gap isn't so large如果字段为空,则向上挤压 CONCATENATE,因此空间间隙不会那么大
【发布时间】:2013-08-18 08:27:45
【问题描述】:

我有一个问题,我/我们从 Excel 中的各个字段创建了一个 CONCATENATE(见下文),并且所有文本当前都很好,并且我们在每个连接之间应用了单个空格。

我遇到的问题是,如果一个字段是空白的,我的单个空格会变成一个双三倍空格,并且在标准文本字符串中看起来不是很整齐。

如果字段/单元格为空,是否有办法将其压缩?

=CONCATENATE(M30," ",M31," ",M32," ",M33," ",M34," ",M35," ",M36," ",M37," ",M38," ",M39," ",M40," ",M44)

【问题讨论】:

    标签: excel excel-formula concatenation whitespace worksheet-function


    【解决方案1】:

    将您的 CONCATENATE 包装在 =TRIM 中。

    【讨论】:

    • 如果 M31 为空,这没有帮助,只有前导或最后一个。
    • 干得好!我从来没有在公式中使用过 TRIM,只在宏中使用过,这就是为什么我认为它只对字符串的开头或结尾有影响。现在我知道公式 =TRIM() 删除了重复的空格。谢谢!
    • 不错的一个。我注意到您从 CONCATENATE 切换到使用 & 符号拼接在一起。
    • 是的,我讨厌那些“睡觉”的错误:)。不过说真的,我也更喜欢“&”而不是CONCATENATE。而且我从没想过在这种情况下使用TRIM。我能想出至少一个我会修正的冗长公式。
    【解决方案2】:

    编写一个宏函数并在工作表中使用。

    Function NoSpaceConcat(oRngJoin As Range) As String
        Dim oRng As Range, sTxt As String
        sTxt = ""
        For Each oRng In oRngJoin
            If Not IsEmpty(oRng) Then sTxt = sTxt & oRng.Value & " "
        Next
        NoSpaceConcat = Trim(sTxt)
    End Function
    

    在工作表中,输入公式=NoSpaceConcat(,然后突出显示要加入的范围并按 Enter。比我想说的任何内置公式都要简洁。

    【讨论】:

    • 谢谢,非常感谢
    【解决方案3】:

    我有一个答案,但它并不漂亮。您可以用 if 和 isblank 子句替换空格。如果单元格为空,则不要做空格,否则做。

    你的公式将是

    =CONCATENATE(M30,IF(ISBLANK(M30),"",""),M31,IF(ISBLANK(M31),"",""),M32,IF(ISBLANK(M32),"", " "),M33,IF(ISBLANK(M33),"",""),M34,IF(ISBLANK(M34),""," "),M35,IF(ISBLANK(M35),"","" ),M36,IF(ISBLANK(M36),"",""),M37,IF(ISBLANK(M37),""," "),M38,IF(ISBLANK(M80),""," "), M39,IF(ISBLANK(M39),"",""),M40,IF(ISBLANK(M40),"",""),M44)

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 2018-10-03
      • 1970-01-01
      • 2022-11-23
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多