可使用TOCOL函数将多列数据垂直堆叠为一列并跳过空单元格:需Excel 365或2021+版本;连续列用=TOCOL(A1:C10),非连续列用=TOCOL((A1:A10,C1:C10,E1:E10));配合FILTER可预筛除指定值。

如果您在Excel中需要将多列数据快速合并为一列,且希望跳过空单元格并保持原始顺序,则可以利用TOCOL函数对二维区域进行垂直堆叠转换。以下是实现该操作的具体步骤:
一、确认Excel版本支持TOCOL函数
TOCOL函数仅在Microsoft 365(订阅版)及Excel 2021及以上版本中可用。若您的Excel显示“#NAME?”错误,说明当前版本不支持该函数。
1、点击左上角“文件”→“帐户”→查看右侧“产品信息”中的版本号。
2、确认版本为Microsoft 365或Excel 2021或更高版本。
3、如版本不符,需升级至支持TOCOL的版本才能继续使用本方法。
二、使用TOCOL函数合并连续多列数据
TOCOL函数可将指定区域的所有非空值按列优先顺序提取为单列数组,自动忽略空白单元格与错误值(默认行为)。
1、选中目标输出区域的第一个单元格(例如D1)。
2、输入公式:=TOCOL(A1:C10),其中A1:C10为待合并的多列数据区域。
3、按Enter键确认。Excel将自动溢出显示全部结果至下方单元格。
4、如需保留原始数据格式(如文本前导零),在公式末尾添加参数2:=TOCOL(A1:C10,2),以启用“文本模式”转换。
三、使用TOCOL函数合并非连续列数据
当需合并不相邻的列(如A列、C列、E列)时,需先用括号与逗号组合构造数组常量,再传入TOCOL处理。
1、选中输出起始单元格(例如F1)。
2、输入公式:=TOCOL((A1:A10,C1:C10,E1:E10)),注意括号层级与逗号分隔方式。
3、按Enter键确认。函数将依次提取A1:A10、C1:C10、E1:E10中的非空值并纵向拼接。
4、若某列含全空或错误值导致结果异常,可添加参数1强制忽略错误:=TOCOL((A1:A10,C1:C10,E1:E10),1)。
四、结合FILTER函数预筛选后再合并
当原始数据中存在需排除的特定值(如“N/A”、“-”或0值)时,可先用FILTER过滤,再交由TOCOL转换,确保输出列纯净。
1、选中输出起始单元格(例如G1)。
2、输入公式:=TOCOL(FILTER(A1:C10,(A1:C10"N/A")*(A1:C10"-")*(A1:C100)))。
3、按Enter键确认。FILTER先剔除指定干扰值,TOCOL再执行列堆叠。
4、若区域含混合数据类型(数字与文本混排),必须确保FILTER返回的数组维度一致,否则TOCOL将报错#VALUE!。
五、替代方案:使用TEXTJOIN+FILTERXML(适用于旧版Excel)
对于不支持TOCOL的Excel 2019及更早版本,可通过TEXTJOIN连接所有内容后,用FILTERXML解析为单列数组,但需手动处理换行符与空值过滤逻辑。
1、在辅助单元格(如H1)输入:=TEXTJOIN(CHAR(10),TRUE,A1:C10),生成含换行符的长字符串。
2、在I1输入:=FILTERXML(""&SUBSTITUTE(H1,CHAR(10),"")&"
3、按Ctrl+Shift+Enter(数组公式)确认,I列将显示逐行解析结果。
4、此方法无法自动扩展至整列,且对特殊字符(如。









