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

如何实现从源表格提取数据填充目标单元格,跳过隐藏行与空白行

提取源表非空可见数据到目标表(无空白行连续填充)

适用于Excel 365/2021及以上(动态数组版本)

直接用FILTER结合SUBTOTAL函数就能实现需求,公式如下:

=FILTER(Table1!C:C, (Table1!C:C<>"")*(SUBTOTAL(103, OFFSET(Table1!C1, ROW(Table1!C:C)-ROW(Table1!C1), 0, 1))=1))
  • 把Table1!C:C替换成你实际要提取的源表列范围(如果是结构化表格,也可以用Table1[列名]的格式)
  • (Table1!C:C<>"")负责筛选出非空单元格
  • SUBTOTAL(103, ...)用来判断该行是否为可见行(103代表忽略隐藏行的COUNTA逻辑,仅当行可见时返回1)
  • 两个条件相乘表示同时满足“非空”和“可见”,FILTER会自动按顺序输出符合条件的数据,不会出现空白行。

适用于旧版Excel(无动态数组版本)

用INDEX+SMALL+SUBTOTAL的数组公式组合,在目标表第一个单元格(比如C36)输入:

=IFERROR(INDEX(Table1!C:C, SMALL(IF((Table1!C:C<>"")*(SUBTOTAL(103, OFFSET(Table1!C1, ROW(Table1!C:C)-ROW(Table1!C1), 0, 1))=1), ROW(Table1!C:C)), ROW(A1))), "")

输入完成后按 Ctrl+Shift+Enter 触发数组计算,再下拉填充公式即可:

  • SMALL函数会从符合“非空+可见”条件的行号中,按顺序取出第N个行号(ROW(A1)下拉时会自动递增为1、2、3...)
  • INDEX根据取出的行号提取对应单元格内容
  • IFERROR用来避免下拉到超出数据范围时显示错误值

示例验证

如果源表Table1的C9有内容、C10为空、C11有内容,无论C10是否隐藏:

  • 目标表C36会自动填充Table1!C9的内容
  • C37会填充Table1!C11的内容,完全跳过空白行和隐藏行,实现连续无空白的填充效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:06:16