2017-06-16 72 views
0

查看本页面上的示例https://www.extendoffice.com/documents/excel/3269-excel-concatenate-cells-if-not-empty.html(如下所示)。在Excel中忽略空格的不确定数量的细胞

如果最后一项为空,此解决方案不起作用。例如,在A列中,如果A5中缺少“Order”,则结果将是“KTE-2015-Ruby-”,而不是“KTE-2015-Ruby”。

我该如何去获得第二个结果,而没有一堆if语句来检查该单元格是否是最后一个不是空白的。

有关更多信息,我将始终检查相同数量的行以获取信息,但实际上具有文本的行数是不确定的。再次以图片为例,我总是只检查1-5行,但我不知道哪些行是空白的。

enter image description here

回答

1

如果您有Office 365 Excel中那么你可以使用TEXTJOIN():

=TEXTJOIN("-",TRUE,A1:A5) 

如果没有,那么你需要添加到配方,除去使用留下的最后一个字符()

=LEFT(A1 & "-" & IF(A2<>"",A2 & "-","") & IF(A3<>"",A3 & "-","") & IF(A4<>"",A4 & "-","") & IF(A5<>"",A5 & "-",""),LEN(A1 & "-" & IF(A2<>"",A2 & "-","") & IF(A3<>"",A3 & "-","") & IF(A4<>"",A4 & "-","") & IF(A5<>"",A5 & "-",""))-1) 

该公式有点不同,因为它总是添加-到最后。然后使用Left删除最后的-。那么不管是否空白,我们总是会在末尾需要删除-


或者为@Jeeped说:

=MID(IF(A1<>"","-" & A1,"") & IF(A2<>"","-" & A2,"") & IF(A3<>"","-" & A3,"") & IF(A4<>"","-" & A4,"") & IF(A5<>"","-" & A5,""),2, 999999) 
+0

完美的答案。我将不得不等待7分钟来标记它。 – user7758051

+0

将分隔符添加到每个分隔符的前端会比较容易,然后用MID(...,2,9999999)将它们全部包装起来? – Jeeped

+0

@很可能。 –

1

具有有限数量的可能的字符串来连接,也可以使用替代和TRIM,如果你没有访问TEXTJOIN。

=SUBSTITUTE(TRIM(A2&" "&B2&" "&C2), " ", "-") 

enter image description here