如何将 ArrayFormula 与数组一起使用(聚合后)?
How do you use ArrayFormula with arrays (after aggregation)?
在我的例子中:
https://docs.google.com/spreadsheets/d/1QQNTw_r9-q-FqVNwUoYklup73niZCFyO0VDUYImP5fo/edit?usp=sharing
我正在使用 Google Forms 作为 eBay 克隆来销售稀有物品。每个出价都从表单输出到“数据”工作表,然后我在“已处理”工作表中设置了 ArrayFormulas。我的想法是我想处理出价,以便我们过滤除出价最高的项目之外的所有内容。所有数据都应该自动更新,因此我想使用 ArrayFormulas。
我的策略是,在列 A 中,我首先过滤所有唯一项 (=unique(filter(Data!A2:A,Data!A2:A<>""))
),最后得到:
- 侏罗纪公园 6-POG 全息图集
- 公主熊 TY 豆豆宝宝
- 全息第一版喷火龙
但是,然后在 B 列中,我们必须找到对应于该独特项目的最高出价,例如:
=IF(ISBLANK(A2),,ArrayFormula(MAX(IF(Data!A2:A=A2,Data!B2:B))))
但是,我不想让 A2 成为单个单元格 (A2),而是一个数组 (A2:A),这样就不必手动将其复制到行中。同样,我也希望 D 和 E 列也是自动的。有什么办法可以实现吗?
我做了一些研究并找到了与您正在寻找的答案非常相似的答案。在后 运行 稍微调整公式以匹配您的 sheet 之后,我能够让它工作:
=ArrayFormula(vlookup(query({row(Data!A2:A),sort(Data!A2:C)},"select max(Col1) where Col2 <> '' group by Col2 label max(Col1)''",0),{row(Data!A2:A),sort(Data!A2:D)},{2,3,4,5},0))
此公式会自动填充产品名称、最高出价、用户名和时间戳。我 运行 进行了一些测试,将我自己的 运行dom 名称和值添加到数据 sheet 中,公式效果很好。
不确定它是否会被认为比之前发布的答案更容易,但如果将来发现此线程,我认为这是解决此类问题的一种稍微简单的方法:
在单元格 A1 中的新选项卡上尝试此操作:
=FILTER(Data!A:D,COUNTIFS(Data!A:A,Data!A:A,Data!B:B,">"&Data!B:B)=0)
使用:
={A1:D1; SORTN(SORT(A2:D, 1, , 2, ), 9^9, 2, 1, )}
翻译:
{A1:D1} - headers
SORT(A2:D, 1, , 2, ) - sort 1st column then 2nd column descending
9^9 - output all possible rows
2 - use 2nd mode of sortn which will group selected column
1 - selected column to be marged based on unique values
在我的例子中:
https://docs.google.com/spreadsheets/d/1QQNTw_r9-q-FqVNwUoYklup73niZCFyO0VDUYImP5fo/edit?usp=sharing
我正在使用 Google Forms 作为 eBay 克隆来销售稀有物品。每个出价都从表单输出到“数据”工作表,然后我在“已处理”工作表中设置了 ArrayFormulas。我的想法是我想处理出价,以便我们过滤除出价最高的项目之外的所有内容。所有数据都应该自动更新,因此我想使用 ArrayFormulas。
我的策略是,在列 A 中,我首先过滤所有唯一项 (=unique(filter(Data!A2:A,Data!A2:A<>""))
),最后得到:
- 侏罗纪公园 6-POG 全息图集
- 公主熊 TY 豆豆宝宝
- 全息第一版喷火龙
但是,然后在 B 列中,我们必须找到对应于该独特项目的最高出价,例如:
=IF(ISBLANK(A2),,ArrayFormula(MAX(IF(Data!A2:A=A2,Data!B2:B))))
但是,我不想让 A2 成为单个单元格 (A2),而是一个数组 (A2:A),这样就不必手动将其复制到行中。同样,我也希望 D 和 E 列也是自动的。有什么办法可以实现吗?
我做了一些研究并找到了与您正在寻找的答案非常相似的答案。在后 运行 稍微调整公式以匹配您的 sheet 之后,我能够让它工作:
=ArrayFormula(vlookup(query({row(Data!A2:A),sort(Data!A2:C)},"select max(Col1) where Col2 <> '' group by Col2 label max(Col1)''",0),{row(Data!A2:A),sort(Data!A2:D)},{2,3,4,5},0))
此公式会自动填充产品名称、最高出价、用户名和时间戳。我 运行 进行了一些测试,将我自己的 运行dom 名称和值添加到数据 sheet 中,公式效果很好。
不确定它是否会被认为比之前发布的答案更容易,但如果将来发现此线程,我认为这是解决此类问题的一种稍微简单的方法:
在单元格 A1 中的新选项卡上尝试此操作:
=FILTER(Data!A:D,COUNTIFS(Data!A:A,Data!A:A,Data!B:B,">"&Data!B:B)=0)
使用:
={A1:D1; SORTN(SORT(A2:D, 1, , 2, ), 9^9, 2, 1, )}
翻译:
{A1:D1} - headers
SORT(A2:D, 1, , 2, ) - sort 1st column then 2nd column descending
9^9 - output all possible rows
2 - use 2nd mode of sortn which will group selected column
1 - selected column to be marged based on unique values