根据 google 工作表中给定的 if 条件重复行 N 次
Repeat rows N of times based on a given if condition in google sheets
所以我有一列包含以下行
7-A
9-B
10-C
我想做的是“如果左起第一个数字是7重复6次,如果左起第一个数字是9重复8次,如果10重复9次,”
我可以用下面的公式做到这一点,但它只适用于一种重复设置
=sort(trim(transpose(split(query(arrayformula(REPT(A2:A600&"*",6)),,9999),"*"))),1,0)
但我需要根据上述条件更改重复次数
如果有一种方法可以用脚本编辑器来完成,那也很棒
欣赏
尝试:
=ARRAYFORMULA(QUERY(FLATTEN(IFNA(SPLIT(REPT(IF(A2:A="",,A2:A&"♀"),
REGEXEXTRACT(A2:A, "\d+")-1), "♀"))), "where Col1 is not null", 0))
更新:
=ARRAYFORMULA(QUERY(FLATTEN(IFNA(SPLIT(REPT(IF(A2:A="",,A2:A&"♀"),
VLOOKUP(REGEXEXTRACT(A2:A, "\d+")*1,
{5, 6; 6, 6; 7, 6; 8, 6; 9, 8; 10, 9; 11, 9}, 2, 0)), "♀"))),
"where Col1 is not NULL", 0))
REPT
可以接受匹配的参数数组。在您的代码中,使用 regexextract
添加一个可变的第二个参数
=sort(trim(transpose(split(query(arrayformula(REPT(A1:A3&"*",REGEXEXTRACT(A1:A3,"\d+")-1)),,9999),"*"))),1,0)
所以我有一列包含以下行
7-A
9-B
10-C
我想做的是“如果左起第一个数字是7重复6次,如果左起第一个数字是9重复8次,如果10重复9次,”
我可以用下面的公式做到这一点,但它只适用于一种重复设置
=sort(trim(transpose(split(query(arrayformula(REPT(A2:A600&"*",6)),,9999),"*"))),1,0)
但我需要根据上述条件更改重复次数
如果有一种方法可以用脚本编辑器来完成,那也很棒
欣赏
尝试:
=ARRAYFORMULA(QUERY(FLATTEN(IFNA(SPLIT(REPT(IF(A2:A="",,A2:A&"♀"),
REGEXEXTRACT(A2:A, "\d+")-1), "♀"))), "where Col1 is not null", 0))
更新:
=ARRAYFORMULA(QUERY(FLATTEN(IFNA(SPLIT(REPT(IF(A2:A="",,A2:A&"♀"),
VLOOKUP(REGEXEXTRACT(A2:A, "\d+")*1,
{5, 6; 6, 6; 7, 6; 8, 6; 9, 8; 10, 9; 11, 9}, 2, 0)), "♀"))),
"where Col1 is not NULL", 0))
REPT
可以接受匹配的参数数组。在您的代码中,使用 regexextract
=sort(trim(transpose(split(query(arrayformula(REPT(A1:A3&"*",REGEXEXTRACT(A1:A3,"\d+")-1)),,9999),"*"))),1,0)