如何在Excel合并单元格(含CONCATENATE公式)时忽略空白生成地址内容
Excel忽略空白单元格合并内容的两种解决方案
一、生成通讯录条目(忽略空白)
如果你的Excel是2019及以后版本,或者使用365,直接用TEXTJOIN函数最便捷,它自带忽略空白的参数。假设通讯录字段(姓名、电话、邮箱等)在A2、B2、C2单元格,要生成「姓名:XXX,电话:XXX,邮箱:XXX」的样式,公式如下:
=TEXTJOIN(",", TRUE, "姓名:"&A2, "电话:"&B2, "邮箱:"&C2)
- 参数说明:第一个
","是内容间的分隔符,第二个TRUE表示自动忽略空白内容,后续每个参数是带前缀的单元格内容,空白单元格对应的整段会被直接跳过。
如果是旧版Excel(无TEXTJOIN功能),用CONCATENATE嵌套IF函数实现:
=LEFT( CONCATENATE( IF(A2<>"", "姓名:"&A2&",", ""), IF(B2<>"", "电话:"&B2&",", ""), IF(C2<>"", "邮箱:"&C2, "") ), LEN( CONCATENATE( IF(A2<>"", "姓名:"&A2&",", ""), IF(B2<>"", "电话:"&B2&",", ""), IF(C2<>"", "邮箱:"&C2, "") ) ) - IF(RIGHT(CONCATENATE(IF(A2<>"", "姓名:"&A2&",", ""),IF(B2<>"", "电话:"&B2&",", ""),IF(C2<>"", "邮箱:"&C2, "")),1)=",",1,0) )
这个公式会先判断每个单元格是否为空,不为空就拼接前缀、内容和分隔符,最后用LEFT去掉末尾多余的分隔符。
二、生成地址标签(A-L列合并到M列,忽略空白)
地址标签通常需要换行显示,优先用TEXTJOIN配合换行符CHAR(10)实现:
=TEXTJOIN(CHAR(10), TRUE, A2:L2)
- 操作提示:输入公式后,右键M列单元格→「设置单元格格式」→「对齐」→勾选「自动换行」,内容会按换行符自动分行,符合地址标签样式。
旧版Excel用CONCATENATE嵌套IF和CHAR(10):
=LEFT( CONCATENATE( IF(A2<>"", A2&CHAR(10), ""), IF(B2<>"", B2&CHAR(10), ""), IF(C2<>"", C2&CHAR(10), ""), IF(D2<>"", D2&CHAR(10), ""), IF(E2<>"", E2&CHAR(10), ""), IF(F2<>"", F2&CHAR(10), ""), IF(G2<>"", G2&CHAR(10), ""), IF(H2<>"", H2&CHAR(10), ""), IF(I2<>"", I2&CHAR(10), ""), IF(J2<>"", J2&CHAR(10), ""), IF(K2<>"", K2&CHAR(10), ""), IF(L2<>"", L2, "") ), LEN( CONCATENATE( IF(A2<>"", A2&CHAR(10), ""), IF(B2<>"", B2&CHAR(10), ""), IF(C2<>"", C2&CHAR(10), ""), IF(D2<>"", D2&CHAR(10), ""), IF(E2<>"", E2&CHAR(10), ""), IF(F2<>"", F2&CHAR(10), ""), IF(G2<>"", G2&CHAR(10), ""), IF(H2<>"", H2&CHAR(10), ""), IF(I2<>"", I2&CHAR(10), ""), IF(J2<>"", J2&CHAR(10), ""), IF(K2<>"", K2&CHAR(10), ""), IF(L2<>"", L2, "") ) ) - IF(RIGHT(CONCATENATE(IF(A2<>"", A2&CHAR(10), ""),IF(B2<>"", B2&CHAR(10), ""),IF(C2<>"", C2&CHAR(10), ""),IF(D2<>"", D2&CHAR(10), ""),IF(E2<>"", E2&CHAR(10), ""),IF(F2<>"", F2&CHAR(10), ""),IF(G2<>"", G2&CHAR(10), ""),IF(H2<>"", H2&CHAR(10), ""),IF(I2<>"", I2&CHAR(10), ""),IF(J2<>"", J2&CHAR(10), ""),IF(K2<>"", K2&CHAR(10), ""),IF(L2<>"", L2, "")),1)=CHAR(10),1,0) )
同样,最后用LEFT去掉末尾多余的换行符,记得开启单元格自动换行。
内容的提问来源于stack exchange,提问作者msseals
相关产品推荐
相关产品推荐

