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

如何提取不同宽高的动态数据区域?Google Sheets公式实现

解决Google Sheets动态提取多组分隔数据的方案

核心思路

利用FILTER、MATCH、INDEX结合数组公式,自动识别分隔列位置和数据区域的有效行数,替代需要手动指定偏移量的OFFSET函数,实现动态适配。

具体公式实现

提取Data 1(第一组数据,左侧到第一个含“|”的列)

在目标起始单元格输入:

=LET(
  sep_col, MATCH("|", A8:Z8, 0),
  max_row, MAX(ROW(A:A)*(A:A<>"")),
  FILTER(A8:INDEX(A:INDEX(A:Z, max_row, sep_col-1)), A8:A<>"")
)
  • sep_col:定位第一组数据右侧的分隔列位置
  • max_row:自动获取原始数据的最后有效行
  • FILTER:提取从A列到分隔列前一列的非空数据区域

提取Data 2(中间组数据,两个分隔列之间)

在目标起始单元格输入:

=LET(
  sep_cols, FILTER(COLUMN(A8:Z8), A8:Z8="|"),
  start_col, INDEX(sep_cols, 1)+1,
  end_col, INDEX(sep_cols, 2)-1,
  max_row, MAX(ROW(A:A)*(A:A<>"")),
  FILTER(INDEX(A:Z, 8, start_col):INDEX(A:Z, max_row, end_col), INDEX(A:A,8):INDEX(A:A,max_row)<>"")
)
  • sep_cols:获取所有含“|”的分隔列位置
  • start_col/end_col:定位中间组数据的起止列
  • 同样通过max_row动态锁定数据行范围

提取Data 3(第三组数据,第二个分隔列到右侧)

在目标起始单元格输入:

=LET(
  sep_cols, FILTER(COLUMN(A8:Z8), A8:Z8="|"),
  start_col, INDEX(sep_cols, 2)+1,
  max_row, MAX(ROW(A:A)*(A:A<>"")),
  FILTER(INDEX(A:Z, 8, start_col):INDEX(A:Z, max_row, COLUMNS(A:Z)), INDEX(A:A,8):INDEX(A:A,max_row)<>"")
)
  • 以第二个分隔列为起点,提取到表格最右侧的非空数据区域

优势说明

  • 无需手动指定区域宽高,自动适配数据变化
  • 避免OFFSET的易出错问题(偏移量需手动更新)
  • 利用LET函数简化公式结构,提升可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:46:05