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

Google Sheets:将不规则分组列数据转置为行

解决含无效数据的列转置分组问题

原始数据(单列N)

Column N
Sep 07 2022
Alert
Something went wrong
fish company
70000123456
1234567
231.03
View Details
Sep 07 2022
---
meat company
70000987654
688773
View Details
Sep 07 2022
Success
produce company
70000192837
View Details

期望输出

datevendorpoInvoicecost
Sep 07 2022fish company700001234561234567231.03
Sep 08 2022meat company70000987654D688773B
Sep 07 2022produce company70000192837

解决方案(Google Sheets公式)

核心思路是定位每个有效数据组的起始日期行,过滤无效内容后提取对应字段:

完整转置公式

将以下公式粘贴到目标区域首行(如A2),自动生成结构化表格:

=ARRAYFORMULA(
  LET(
    dates, FILTER(N:N, ISDATE(N:N)),
    rows, FILTER(ROW(N:N), ISDATE(N:N)),
    data, MAP(dates, rows, LAMBDA(d, r,
      LET(
        group, OFFSET(N, r-1, 0, XMATCH("View Details", OFFSET(N, r-1, 0, 100), 0)-1, 1),
        clean_group, FILTER(group, NOT(REGEXMATCH(group, "^(Alert|Something went wrong|---|Success|View Details)$"))),
        {d, INDEX(clean_group,1), INDEX(clean_group,2), IFERROR(INDEX(clean_group,3),""), IFERROR(INDEX(clean_group,4),"")}
      )
    )),
    HSTACK({"date","vendor","po","Invoice","cost"}, data)
  )
)

公式细节说明

  • FILTER(ISDATE(...)):精准定位所有日期行,作为每个数据组的起始标记
  • OFFSET+XMATCH:从日期行开始,提取到下一个「View Details」之前的所有内容为单个数据组
  • REGEXMATCH:批量过滤无效行(Alert、错误提示、分隔符、Success、查看详情)
  • INDEX+IFERROR:按顺序提取供应商、PO、发票、成本字段,缺失值自动补空
  • HSTACK:合并表头与处理后的数据,生成完整结构化表格

发票字段格式调整

如果需要给发票号自动添加前缀后缀(如示例中的D和B),修改对应字段即可:

IFERROR("D"&INDEX(clean_group,3)&"B", "")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:25:20