使用CONCAT函数时能否仅拼接指定范围内包含文本的非空单元格
解决方案
适用Excel 365/2021及以上版本(最简方案)
直接用TEXTJOIN函数即可,原生支持忽略空单元格,无需额外判断逻辑:
=TEXTJOIN(CHAR(10),TRUE,Sheet5!E3:E40)
参数说明:
- 第一个参数
CHAR(10):指定换行符作为内容分隔符,和你之前的逻辑一致 - 第二个参数
TRUE:开启忽略空单元格的特性,自动跳过范围内无内容的行 - 第三个参数
Sheet5!E3:E40:你需要合并的注释范围
如果需要去掉拼接后末尾多余的换行符,可以调整为:
=IFERROR(LEFT(TEXTJOIN(CHAR(10),TRUE,Sheet5!E3:E40),LEN(TEXTJOIN(CHAR(10),TRUE,Sheet5!E3:E40))-1),"")
适用旧版本Excel(无TEXTJOIN函数)
用数组判断+CONCAT实现,输入公式后需要按Ctrl+Shift+Enter确认启用数组计算:
=CONCAT(IF(Sheet5!E3:E40<>"",Sheet5!E3:E40&CHAR(10),""))
逻辑说明:IF会遍历整个选中范围,非空单元格返回「内容+换行符」,空单元格返回空文本,最后由CONCAT合并所有结果,不会产生多余空白行。
原公式溢出问题说明
你之前写的公式将CONCAT放在了IF判断内部,会为范围内每一个单元格都返回一个拼接结果,自然会产生溢出。只需要将CONCAT移到最外层,包裹IF返回的整个数组结果,最终只会输出单个合并值,不会出现溢出问题。
如果需要在单元格内直接可视化看到换行效果,记得勾选单元格格式设置中的「自动换行」选项。
内容的提问来源于stack exchange,提问作者mattH
相关产品推荐
相关产品推荐

