我有一个数据表和一个公式,对于每行,该公式将一个数组的标题返回到H列,该列标题根据该行中的数据(从最高到最低)进行排序。
这是我使用的公式。它完成了工作。
=TRANSPOSE(QUERY(TRANSPOSE({$B$1:$G$1;$B2:$G2}),"SELECT Col1 ORDER BY Col2 DESC",0))
在N列中,我现在想返回另一个列标题数组,但是这次是根据A列中具有相同“代码”的所有行的总数(再次将列标题从高到低排序) )。这意味着第4行第N列将根据第2行和第4行的总和对标题进行排序(因为这些行中的每一行在A列中具有相同的代码,即A1)。
我想找到一个不需要显式声明每列总和的解决方案,因为最终的电子表格将包含约30列。
我正在努力寻找一种方法来做到这一点。如果需要,我很乐意尝试完全不同的解决方案。
有什么建议吗?
这里是工作表的链接... https://docs.google.com/spreadsheets/d/15Y06GIY0HYGzOVRS-a_1SYWzVq5dBffHBnmg5k6hCxQ/edit?usp=sharing
我试图将代码列添加到Query语句中,但这不起作用,因为在对数据进行转置时,它导致列具有两种不同的数据类型。
答案 0 :(得分:0)
粘贴到 N2 单元格中,然后向下拖动到 N3 单元格:
=TRANSPOSE(QUERY(TRANSPOSE(QUERY(QUERY(A$1:G,"where A='"&A2&"'"),
"select sum(Col2),sum(Col3),sum(Col4),sum(Col5),sum(Col6),sum(Col7)
where Col1 is not null
group by Col1
label sum(Col2)'"&B$1&"',sum(Col3)'"&C$1&"',sum(Col4)'"&D$1&"',sum(Col5)'"&E$1&"',sum(Col6)'"&F$1&"',sum(Col7)'"&G$1&"'", 1)),
"select Col1
order by Col2 desc"))
答案 1 :(得分:0)
好的...因此,经过大量研究和研究,我设法使用MMULT公式创建了一个解决方案。
这是我的最终公式。我还在原始共享电子表格中发布了工作版本。
= TRANSPOSE(查询(TRANSPOSE({$ B $ 1:$ G $ 1; mmult(transpose(ArrayFormula(row($ A $ 2:$ A)^ 0))),ARRAYFORMULA(($ A $ 2:$ A = $ A2)* $ B $ 2:$ G))}),“ SELECT Col1 ORDER BY Col2 DESC”,0)))
如果其他人想了解公式的MMULT部分的结构,请单击此处的链接,该帖子将我引向该解决方案。
非常感谢那些做出贡献的人。