我有下面左边两列的列,但是想要像右边两列一样的列。我不确定这个转变是否有名称,或者它是什么。使用Group By查询似乎是我能找到的最接近的,但是想要聚合数据项而不是在每个组中列出它们。左列将通过合并各种数据输入表,重新排序列以及按列A排序来创建。我已经弄明白了。但转换为C&列中的格式D困惑我。我想这更像是一个报表编写器函数:我是否需要编写一个带循环的脚本函数来实现这个结果,或者我有什么东西可以忽略?
A B C D
A group - subgroup1 data 1 A group - subgroup1
A group - subgroup1 data 2 data 1
A group - subgroup1 data 3 data 2
A group - subgroup2 data 4 data 3
A group - subgroup2 data 5 A group - subgroup2
A group - subgroup2 data 6 data 4
A group - subgroup2 data 7 data 5
B group - subgroup1 data 8 data 6
B group - subgroup1 data 9 data 7
C group - subgroup1 data 10 B group - subgroup1
C group - subgroup1 data 11 data 8
C group - subgroup3 data 12 data 9
C group - subgroup3 data 13 C group - subgroup1
C group - subgroup3 data 14 data 10
data 11
C group - subgroup3
data 12
data 13
data 14
答案 0 :(得分:2)
正如@ttarchala所建议的那样,Pivot表是一个有用的功能。我确实尝试制作query
解决方案。这不完全是你想要的。但是,它很接近,IMO:
=ARRAYFORMULA(SPLIT(TRANSPOSE(QUERY(QUERY(A2:B15,"select max(B) group by B pivot A")&"",, 999999999999))&" ", " ", 0))
这里的想法是伪造像MAX
之类的聚合函数,这样我们就可以在query
内进行转移。公式的其余部分只是删除空白。
答案 1 :(得分:1)
您可能想要使用数据透视表。将A列和B列定义为数据透视表的尺寸,然后将它们放在左(垂直)轴上。
这不会达到您想要的效果 - 标题不会在单独的行中 - 但会启用自动重新计算和小计等有用的功能。
答案 2 :(得分:0)
感谢https://stackoverflow.com/users/34704/ttarchala和https://stackoverflow.com/users/8404453/i-i提出的答案,我能够提出所需的确切公式,但需要两个步骤。
数据在A栏和A列中。 B,我想要C& D,所以我把临时结果放在E& F.所以第一个公式是E1,第二个公式是C1。
=ARRAYFORMULA(split(Transpose(split(Textjoin("█",TRUE,Transpose(QUERY({A1:A14&"¤␣","␣¤"&B1:B14},"select max(Col2) group by Col2 pivot Col1"))),"█")),"¤"))
=Arrayformula(if(E:F="␣","",E:F))
数据透视表非常有用。我预处理了我的两列数据,以便标题列有一个尾随¤␣,数据是一个领先的␣¤。然后在Transpose(split(Textjoin(Transpose)))之后,我用一根柱子将其拆开,然后得到两列,其中包含␣所需的空白单元格。第二遍(因为我无法弄清楚如何加入公式)是将␣与虚无替换到结果列中。