使用具有动态列数 Header 名称的 ArrayFormula
Using ArrayFormula with a Dynamic Number of Column Header Names
我的目标是将 ArrayFormula
与 SPLIT()
函数一起使用,并命名每列的 header。
我的问题是下面的公式仅在声明的 header 的数量与第一行要拆分的元素数量完全匹配时才有效,即。如果第一行有 3 个元素被拆分,则公式需要 3 个 header 命名为 (g1, g2, g3),但如果任何行有超过 3 个元素要拆分,则会出错。
有没有办法使 header 列的名称在数字上动态变化,以便拆分的元素数可以是,比如说,从 0 到 10?要拆分的元素将始终以逗号分隔且没有空格。
=ArrayFormula({"g1", "g2", "g3";if(A2:A="","",split(A2:A,","))})
link 例如:https://docs.google.com/spreadsheets/d/1c2pskSYsGs12Yjbn-5gORQ22mDSaC9cSnp1nWeULlf4/edit?usp=sharing
你可以试试:
=index(iferror({"g"&sequence(1,max(len(substitute(
transpose(query(transpose(if(iferror(split(A2:A,","))="",,"z")),,9^9)),
" ",))));split(A2:A,",")}))
如果我们可以使用 Orders 列,那就很简单了:
=index(iferror({"g"&sequence(1,max(B:B));split(A2:A,",")}))
可以结合index函数、sequence函数和max[=28=函数来实现] 功能。这是其背后的思考过程:
- max 函数(您可以阅读更多相关信息here)将检索订单列的最大值。
- 序列函数(您可以阅读更多相关内容here)将生成从 1 开始到前一个最大值结束的序列。
- index 函数(您可以阅读更多相关信息 here)将把序列的元素(前面有一个“g”)分布到尽可能多的作为元素的单元格在序列中。
如果将它们结合起来,您将得到:
=INDEX("g"&SEQUENCE(1,MAX(B:B)))
我的目标是将 ArrayFormula
与 SPLIT()
函数一起使用,并命名每列的 header。
我的问题是下面的公式仅在声明的 header 的数量与第一行要拆分的元素数量完全匹配时才有效,即。如果第一行有 3 个元素被拆分,则公式需要 3 个 header 命名为 (g1, g2, g3),但如果任何行有超过 3 个元素要拆分,则会出错。
有没有办法使 header 列的名称在数字上动态变化,以便拆分的元素数可以是,比如说,从 0 到 10?要拆分的元素将始终以逗号分隔且没有空格。
=ArrayFormula({"g1", "g2", "g3";if(A2:A="","",split(A2:A,","))})
link 例如:https://docs.google.com/spreadsheets/d/1c2pskSYsGs12Yjbn-5gORQ22mDSaC9cSnp1nWeULlf4/edit?usp=sharing
你可以试试:
=index(iferror({"g"&sequence(1,max(len(substitute(
transpose(query(transpose(if(iferror(split(A2:A,","))="",,"z")),,9^9)),
" ",))));split(A2:A,",")}))
如果我们可以使用 Orders 列,那就很简单了:
=index(iferror({"g"&sequence(1,max(B:B));split(A2:A,",")}))
可以结合index函数、sequence函数和max[=28=函数来实现] 功能。这是其背后的思考过程:
- max 函数(您可以阅读更多相关信息here)将检索订单列的最大值。
- 序列函数(您可以阅读更多相关内容here)将生成从 1 开始到前一个最大值结束的序列。
- index 函数(您可以阅读更多相关信息 here)将把序列的元素(前面有一个“g”)分布到尽可能多的作为元素的单元格在序列中。
如果将它们结合起来,您将得到:
=INDEX("g"&SEQUENCE(1,MAX(B:B)))