取消谷歌表格中两列的嵌套

问题描述 投票:0回答:2

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

A 栏 B 栏 电子邮件
A、B XX,YY [电子邮件受保护]
A、C FF,DD [电子邮件受保护]

我尝试取消第一列的嵌套并保留其余的列,如下所示

sample

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

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

google-sheets array-formulas flatten unnest
2个回答
1
投票

您可以在 A 列上使用 split 函数,然后使用 index 函数。考虑到该表,您可以使用:

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

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

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

1
投票

我认为这个问题没有简单的解决方案。您要求的元素组合与已进行的多项选择选择一样多。 Google Sheets 中的任何函数在可以表达的元素数量方面都有其潜力和限制。这里一个非常有用的公式是 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 来过滤空值:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.