如何通过将行旋转到 csv 数据来折叠工作表
Posted
技术标签:
【中文标题】如何通过将行旋转到 csv 数据来折叠工作表【英文标题】:How to collapse sheet by pivoting rows into csv data 【发布时间】:2021-10-27 17:58:21 【问题描述】:我有一组数据,其中一个帐户 ID 可以包含多行国家/地区。我正在寻找一个数组函数,它将为我提供一个唯一的帐户列表,其中第二列中的国家/地区为 csv 值,例如国家 1,国家 1,国家 3。
如果我唯一的帐户,此查询将按行执行,但我真的在寻找一个数组,因此我不必随着行数的增长而维护它。
=TEXTJOIN(",",1,UNIQUE(QUERY(A:B,"select B where A = '"&D2&"'",0)))
I have a sample sheet here.
【问题讨论】:
你能分享可编辑的工作表吗? 【参考方案1】:尝试:
=INDEX(REGEXREPLACE(TRIM(SPLIT(FLATTEN(QUERY(QUERY(
IF(A2:A="",,A2:A&"×", B2:B&","),
"select max(Col2)
where not Col2 matches '^×|^$'
group by Col2
pivot Col1"),,9^9)), "×")), ",$", ))
【讨论】:
如果你继续使用 INDEX() 而不是 Arrayformula() 只是因为它更短,你会开始让人们感到困惑 :) 非常感谢@player0!您的解决方案效果很好。您介意解释一下 ^×|^$ 和 9^9 的工作原理吗? @ChrisRosendin 当然,^×|^$ 的意思是:以 × 或 | 开头的 ^开始 ^ 并结束 $ 之间没有任何内容(换句话说,跳过空白单元格和仅包含 × 的单元格 - 请记住,即使 A 列包含空白单元格,我们也会用 × 加入一列,这就是我们从输出中将其正则表达式的原因)。 @ChrisRosendin 9^9 表示巨大的数字 - 可以是您希望它只需要大于工作表总行数的任何数字,因此如果 seet 有 10 行,您可以使用 11 而不是 9^ 9 (=387420489)。 ,,9^9 用于将所有列连接成一行。在这里查看查询粉碎:i.stack.imgur.com/1840C.png ---- ***.com/a/65435321/5632629 @MattKing :)以上是关于如何通过将行旋转到 csv 数据来折叠工作表的主要内容,如果未能解决你的问题,请参考以下文章
如何将行从一个 Excel 工作表复制到另一个工作表并使用 VBA 创建重复项?