2017-06-21 70 views
1

行,所以试图用下面右/长度不工作

=LEFT(A1,LEN(A1)-(RIGHT(A1)=",")) 

公式在包含公式的单元格:

=IF($I10>0,CONCATENATE($H10," - ",$I10,", ",IF($K10>0,CONCATENATE($J10," - ",$K10,", ",IF($M10>0,CONCATENATE($L10," - ",$M10),"")),"")),"") 

它转换为

Tiffany - 5, Ben L - 4, Cat - 4 

现在,如果我用一个“1”的单元设置了一个简单的测试,代码工作正常,它删除了逗号。如果在最后碰巧有一个“,”将不会起作用,如果一个特定的人返回0作为他们的结果,可能会发生这种情况。

+0

公式=代码,也去掉了VBA代码,因为它是不是在这种情况下,适当的。它适用于您的测试单元格,但不包含任何以逗号结尾的其他值。 –

+1

该公式本身似乎不必要的晦涩难懂。 '= IF(RIGHT(A1)=“,”,LEFT(A1,LEN(A1)-1),A1)'更清楚地说明逻辑。 –

+1

您可以使用[tag:textjoin]工作表函数而不是CONCATENATE吗?可以通过否定检查尾随逗号来解决一些问题。 – Jeeped

回答

2

您的拼接公式会追加", "(逗号+空格),因此单元格中的最后一个字符不是逗号,而是空格。这就是为什么它在你的测试用例"1,"中起作用,但在实际情况下不起作用。

一起运用公式的TRIM函数忽略尾随空白:

=LEFT(TRIM(A2),LEN(TRIM(A2))-(RIGHT(TRIM(A2))=",")) 

enter image description here

+1

哇,这就是为什么你不睡觉后,这个东西没有工作,甚至没有跨过我的脑海,谢谢! –