如何合并多列为单列并跳过返回空值的公式单元格(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():去除内容前后多余空格
注意事项
- 请将公式中的
$A:$C替换为你实际需要合并的列范围 - 下拉填充时,出现
#NUM!(方案1)或空白(方案2)时即可停止,说明已提取完所有非空数据 - 两种公式均能识别公式返回的
=""空值,不会将其纳入结果
内容的提问来源于stack exchange,提问作者Mike_BossO
相关产品推荐
相关产品推荐

