Arrayformula 在 Google 工作表中生成重复项

Arrayformula generating duplicates in Google Sheets

我似乎有一个 arrayformula 正在为我生成重复项。

我先把D列的代码给你看,然后说明问题:

=arrayformula(
if (C1225:C84="A",A1225:A84, 
if (C1225:C84="B",B1225:B84,
if (C1225:C84="AB",{A1225:A84, B1225:B84},""))))

如果是 A 或 B,它应该取 A 或 B 的内容并将其放入 D。所以我希望单元格 E 为空,除非 C 中的内容是 "AB" - 只有这样我才想要填充了来自 A 和 B 的数据的两个单元格。

目前正在输出A两次

For No One|No Reply|ab|For No One|No Reply
Across The Universe (Let It Be Naked...)|The End|a|Across The Universe (Let It Be Naked...)|Across The Universe (Let It Be Naked...)
All You Need Is Love|Twist And Shout|b|Twist And Shout|Twist And Shout

所以第一行没问题,但后两行生成不需要的重复项。

您遇到的问题是因为 ARRAYFORMULA 将所有响应都设为包含 2 个项目的数组。由于最终结果具有此大小,因此所有结果必须具有相同的大小。

试试这个,更改范围以满足您的需要以及 10:

=arrayformula(
if (C2:C="A",{A2:A, transpose(split(rept(", ", 10), ",", TRUE))}, 
if (C2:C="B",{B2:B, transpose(split(rept(", ", 10), ",", TRUE))},
if (C2:C="AB",{A2:A, B2:B},))))

rept(", ", 10) 部分创建一个文本字符串,该文本字符串重复 10 次,或 ", , , , , , , , , , "

Split() 然后将其拆分为每个逗号的条目,删除逗号,因此在这种情况下是一系列空格。 TRUE 告诉 Split 对每次出现的逗号执行此操作,因此它变为:

split(", , , , , , , , , , ", ",", TRUE)

然后我使用 transpose () 将其更改为行而不是列。这需要与我使用括号创建的数组中的其他项目的行数相同,所以我基本上得到: {A2:10澳元,[Make_Blank_Entries_For_Each_Row]}

所以如果我的数学计算正确,你应该使用:

=arrayformula(
if (C1225:C84="A",{A1225:A84, transpose(split(rept(", ", 460), ",", TRUE))}, 
if (C1225:C="B",{B1225:B84, transpose(split(rept(", ", 460), ",", TRUE))},
if (C1225:C="AB",{A1225:A84, B2:B},))))