【问题标题】:How can I rearrange a Google Sheet using the data within the sheet?如何使用工作表中的数据重新排列 Google 工作表?
【发布时间】:2023-04-02 22:36:02
【问题描述】:
我得到以下格式的大量序列化电子表格:
PN SN Qty
1 24 3
2 25 1
3 26 7
我需要编写一个表格脚本,它可以重新排列数据,这样标题就消失了,数量被推断出来,然后被清除。
例如,期望的结果是:
1 24
1 24
1 24
2 25
3 26
3 26
3 26
3 26
3 26
3 26
3 26
我尝试编写一些递归语句来实现这一点,但是一旦我开始在工作表中添加新行,我的循环就会中断。我已经尝试了数百次不同的迭代,我知道这应该是一个相当简单的任务,但是唉,我完全没有练习。我担心在这一点上我执着于错误的想法。任何正确方向的帮助将不胜感激!
【问题讨论】:
标签:
google-sheets
google-sheets-formula
array-formulas
transpose
【解决方案1】:
您不需要使用谷歌应用脚本。
试试下面的公式:
={ARRAYFORMULA(TRIM(TRANSPOSE(SPLIT(QUERY(
REPT(A2:A&"♠", C2:C), ,999^99), "♠")))),ARRAYFORMULA(TRIM(TRANSPOSE(SPLIT(QUERY(
REPT(B2:B&"♠", C2:C), ,999^99), "♠"))))}
【解决方案2】:
方法不同,结果相同:
=ArrayFormula(SPLIT(QUERY(FLATTEN(SPLIT(FILTER(REPT(A2:A&"\"&B2:B&"^",C2:C),A2:A<>""),"^",0,1)),"Select * Where Col1 <>''"),"\"))
我添加这个只是因为不同的人可能会发现其中一个更容易理解和应用。与马里奥斯给出的伟大建议相比,这个公式没有任何实际或性能增益。
注意:此公式使用了尚未正式发布的 Google Scripts 函数 FLATTEN。