【问题标题】:Unnest two columns in google sheet在谷歌表格中取消两列
【发布时间】:2023-01-11 17:36:40
【问题描述】:

我这里有一个这样的表格(基本上它是来自谷歌表格的数据,在 A 列和 B 列中有多项选择答案,在 C 列中有非多项选择数据)我需要为每个多项选择答案单独一行。

Column A Column B Email
A,B XX,YY 1@gmail.com
A,C FF,DD 2@gmail.com

我试图取消嵌套第一列并像这样保留剩余的列

enter image description here

我尝试了几种我发现的使用数组公式展平和拆分的方法,但我真的不知道从哪里开始。

任何帮助或提示将不胜感激!

【问题讨论】:

  • 抱歉,出于某种原因,它没有让我在第二张桌子上发帖。
  • 欢迎! “任何帮助或提示将不胜感激!”因为这个网站是为了完全的答案精确的, 切题, 能问一个准确的问题吗?可以看How to Ask获取指导。
  • 你能请read about why text is better than images of text然后edit将你的文字图片转换成实际文字吗?有关如何格式化代码块的信息,请参阅/editing-help#code
  • 您有多少个这样的多选列,每个多选列的最大项目数是多少?

标签: google-sheets array-formulas flatten unnest


【解决方案1】:

您可以使用分裂列 A 上的函数,然后使用指数功能。考虑到该表,您可以使用:

=index(split(A2,","),1,1)

分裂函数使用指定的分隔符分隔文本,返回一个 1 行 2 列的数组;这指数函数将返回此数组的第一行和第一列。要从 A 列返回第二个元素,只需更改为

=index(split(A2,","),1,2)

【讨论】:

    【解决方案2】:

    我认为对此没有简单的解决方案。您要求的元素组合与已进行的多项选择一样多。 Google 表格中的任何函数都有其潜力和限制,即它可以表达多少元素。这里一个非常有用的公式是 REDUCE。使用 REDUCE 和用 COUNTA 计数的逗号分隔的元素序列,您可以建立这个公式:

    =QUERY(REDUCE({"Col A","Col B","Email"},SEQUENCE(COUNTA(A2:A)),LAMBDA(z,c,{z;LAMBDA(ax,bx,
    REDUCE({"","",""},SEQUENCE(ax),LAMBDA(w,a,
    {w;
    REDUCE({"","",""},SEQUENCE(bx),LAMBDA(y,b,
    {y;INDEX(SPLIT(INDEX(A2:A,c),","),,a),INDEX(SPLIT(INDEX(B2:B,c),","),,b),INDEX(C2:C,c)}
    ))})))
    (COUNTA(SPLIT(INDEX(A2:A,c),",")),COUNTA(SPLIT(INDEX(B2:B,c),",")))})),
    "Where Col1 is not null",1)
    

    由于我必须在每个 REDUCE 中使用“初始值”,因此我使用 QUERY 来过滤空值:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-23
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多