You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并多列为单列并跳过返回空值的公式单元格(Office365旧版)

多列合并为单列并跳过空单元格(兼容旧版Office 365)

针对你的需求——合并多列数据为单列,同时跳过包含返回空值(="")公式的单元格,且无法使用TOCOL这类新函数,以下提供两种可行的公式方案:

方案1:数组公式(需按Ctrl+Shift+Enter确认)

如果你的数据范围是A:C(可根据实际调整),在目标单元格(如E1)输入以下公式,输入完成后按Ctrl+Shift+Enter触发数组运算,然后下拉填充直到出现#NUM!(表示无更多数据):

=INDEX($A:$C,SMALL(IF($A:$C<>"",ROW($A:$C)),ROW(A1)),MOD(SMALL(IF($A:$C<>"",COLUMN($A:$C)+ROW($A:$C)*100),ROW(A1)),100))

原理说明

  • IF($A:$C<>"",ROW($A:$C)):筛选出所有非空单元格的行号
  • SMALL(...,ROW(A1)):按顺序提取第N个非空单元格的行号(N随下拉递增)
  • MOD(SMALL(...),100):提取对应单元格的列号
  • INDEX($A:$C,行号,列号):定位并返回目标单元格内容

方案2:非数组公式(无需组合键)

如果觉得数组公式操作麻烦,可使用TEXTJOIN+MID组合公式,同样以A:C为数据范围,在目标单元格输入后直接下拉:

=TRIM(MID(SUBSTITUTE(TEXTJOIN("|",TRUE,$A:$C),"|",REPT(" ",99)),(ROW(A1)-1)*99+1,99))

原理说明

  • TEXTJOIN("|",TRUE,$A:$C):用|连接所有非空单元格内容(TRUE参数自动跳过空值)
  • SUBSTITUTE(..., "|", REPT(" ",99)):把分隔符|替换为99个空格,方便后续截取
  • MID(..., (ROW(A1)-1)*99+1,99):按顺序截取每一段内容,ROW(A1)控制截取位置
  • TRIM():去除内容前后多余空格

注意事项

  1. 请将公式中的$A:$C替换为你实际需要合并的列范围
  2. 下拉填充时,出现#NUM!(方案1)或空白(方案2)时即可停止,说明已提取完所有非空数据
  3. 两种公式均能识别公式返回的=""空值,不会将其纳入结果

内容的提问来源于stack exchange,提问作者Mike_BossO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:05:31