将表格单元格数据分成具有公共标识符的多行

问题描述 投票:0回答:1

我目前有一个具有以下列/行布局的 Google 表格:

firstname1, address1, orderdate1, item1, orderdate2, item2, orderdate3, item3
firstname2, address2, orderdate1, item1, orderdate2, item2
firstname3, address3, orderdate1, item1

我想要实现的期望输出如下所示:

firstname1, address1, orderdate1, item1
firstname1, address1, orderdate2, item2
firstname1, address1, orderdate3, item3
firstname2, address2, orderdate1, item1
firstname2, address2, orderdate2, item2
firstname3, address3, orderdate1, item1

这是我正在使用的公式:

=let(Σ,tocol(,1), reduce(Σ,indirect("Sheet1!C2:"&index(match(,0/(Sheet1!A:A<>"")))),lambda(a,c,vstack(if(iserror(a&""),Σ,a),if(len(c),hstack(index(Sheet1!A:B,row(c)),c),Σ)))))

但是输出是:

firstname1, address1, orderdate1
firstname1, address1, item1
firstname1, address1, orderdate2
firstname1, address1, item2
firstname1, address1, orderdate3
firstname1, address1, item2
firstname2, address2, orderdate1
firstname2, address2, item1
firstname2, address2, orderdate2
firstname2, address2, item2
firstname3, address3, orderdate1
firstname3, address3, item1

我不确定如何将订单日期和商品单元格分组在一起,以便它们保留在一行上

google-sheets macros
1个回答
0
投票

使用 QUERY 及其 详细文档尝试此公式:

=query(
  {A1:D;A1:B,E1:F;A1:B,G1:H},
  "select * where Col1 is not null and Col3 is not null order by Col1"
)

在此公式中,三组列堆叠在一起:

  • {A1:D;A1:B,E1:F;A1:B,G1:H}
    • Col1 和 Col2 始终是名字和地址
    • 第 3 栏始终是订购日期
    • Col4 始终是商品编号

公式是动态的,它会自动响应额外的数据行。关键是:

  • where Col1 is not null
    - 将忽略任何空白行
  • and Col3 is not null
    将忽略任何存在空白订单日期的行
  • order by Col1
    - 将按名字顺序排序。

数据 - 之前

before


数据 - 之后

after

© www.soinside.com 2019 - 2024. All rights reserved.