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

Excel 2016:如何将多工作表指定列非空数据提取至主表

提取多工作表指定列非空数据到主表的解决方案

根据你的需求,分两种常见场景给出公式方案:

场景1:将所有工作表指定列的非空数据合并到主表同一列(汇总去重/不去重)

如果需要把T1、T2、T3等工作表指定列的非空值全部汇总到主表的Master Table列,可使用动态数组公式(适用于Excel 365/2021及以上版本):

  • 不去重版本:
    =VSTACK(FILTER(T1!ChoiceCol,T1!ChoiceCol<>""),FILTER(T2!ChoiceCol,T2!ChoiceCol<>""),FILTER(T3!ChoiceCol,T3!ChoiceCol<>""))
    
    公式说明:用FILTER筛选每个工作表指定列的非空数据,再用VSTACK将所有结果垂直堆叠,自动溢出到下方行。
  • 去重版本(如果需要剔除重复值):
    =UNIQUE(VSTACK(FILTER(T1!ChoiceCol,T1!ChoiceCol<>""),FILTER(T2!ChoiceCol,T2!ChoiceCol<>""),FILTER(T3!ChoiceCol,T3!ChoiceCol<>"")))
    
    新增UNIQUE函数对堆叠后的结果去重。

场景2:主表各列对应单个工作表的指定列,提取非空值

如果主表的T1ChoiceCol、T2ChoiceCol等列分别对应T1、T2等工作表的指定列,仅提取对应列的非空值,可使用以下方案:

动态数组版本(Excel 365/2021+)

在主表T1ChoiceCol列的第一个单元格(比如B2)输入:

=FILTER(T1!ChoiceCol,T1!ChoiceCol<>"")

公式会自动溢出所有非空值到下方行,空行自动留空。同理,在T2ChoiceCol列输入=FILTER(T2!ChoiceCol,T2!ChoiceCol<>""),以此类推。

兼容旧版Excel的公式(无动态数组)

在主表T1ChoiceCol列的B2单元格输入数组公式(输入后按Ctrl+Shift+Enter确认):

=IFERROR(INDEX(T1!ChoiceCol,SMALL(IF(T1!ChoiceCol<>"",ROW(T1!ChoiceCol)-ROW(T1!ChoiceCol$1)+1),ROWS($B$2:B2))),"")

然后下拉填充公式直到出现空值。该公式通过SMALL筛选非空行的位置,再用INDEX提取对应值,IFERROR处理超出非空行数时的错误,显示为空。

注意:将公式中的ChoiceCol替换为你实际的列名或列范围(比如A:A),T1、T2替换为实际工作表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:43:12