我在Excel中有一个包含10列的表。对于每一行,填充有不同数量的单元格,例如
对于HTML电子邮件,我的串联字符串如下所示
(“+ Machine1 +”,“+ Machine2 +”,“+ Machine3 +”,“+ Machine4 +”,“+ Machine5 +”,“+ Machine6 +”)
但是我希望逗号在行中的最后一个单元格之后不显示(无论是列3,4,5,6)。
这就是我得到的
(TEST1,TEST2,TEST3,TEST4,TEST5 ,,)
我想在最后删除两个逗号。希望这是有道理的!
如果您有Office 365 Excel,则使用TEXTJOIN:
="(" & TEXTJOIN(", ",TRUE,A2:F2) & ")"
如果没有那么你将需要为每个回归使用IF和Mid:
=MID("(" & IF(A2 <> "",", " & A2,"") & IF(A2 <> "",", " & B2,"") & IF(C2 <> "",", " & C2,"") & IF(D2 <> "",", " & D2,"") & IF(E2 <> "",", " & E2,"") & IF(F2 <> "",", " & F2,""),3,999)
替代没有IF
除了Scott的有效解决方案之外,我还通过REPT
函数展示了一种方法。应用于包含字符串的单元格,它“重复”其内容和逗号一次(由COUNTA()
表示等于1),而空单元格导致零重复,这样不仅可以省略单元格内容,还可以省略逗号:
="(" & SUBSTITUTE(REPT(A1&",",COUNTA(A1))&REPT(B1&",",COUNTA(B1))&REPT(C1&",",COUNTA(C1))&REPT(D1&",",COUNTA(D1))&REPT(E1&",",COUNTA(E1))&REPT(F1&",",COUNTA(F1))&"$",",$",")")
一个简单的SUBSTITUTE
删除最后一个逗号,无论它出现在右括号“)”之前。