我有一个表单,用电子表格填充制造商类别的数据对,如下所示:
Mfr Category
A Servers
A Workstations
B Components
C Workstations
D Networking
E Workstations
F Other
G Components
我想构建一个类似于数据透视表的列表,其中包含类别条目作为列标题,但每个列表都包含制造商列表:
Servers Workstations Components Networking Other
A A B D F
C G
E
可以在路上添加类别,因此我希望像在数据透视表中一样自动检测它们。
答案 0 :(得分:1)
试试这个:
=ARRAYFORMULA(TRANSPOSE(SPLIT(TRANSPOSE(QUERY(QUERY(A1:B8," select max(A) group by A pivot B"),,5000))," ")))
你不能订购标题。
答案 1 :(得分:0)
由于我的数据包含空格,以匿名' answer为基础,我提出了以下解决方案:
Sheet2
进行引用。单元格A1包含公式=ARRAYFORMULA(SUBSTITUTE('Sheet1'!A:B," ","_"))
Sheet3
上,在单元格A1中输入以下内容:=ARRAYFORMULA(SUBSTITUTE(TRANSPOSE(SPLIT(TRANSPOSE(QUERY(QUERY(Sheet2!$A$1:$B$1000,"select max(A) group by A pivot B",1),,5000))," ")),"_"," "))
解释每个公式的顺序:
QUERY(Sheet2!$A$1:$B$1000,"select max(A) group by A pivot B",1)
执行Google Visualization API查找以产生以下结果:
Components Networking Other Servers Workstations A A B C D E F G
它开始看起来像一个数据透视表,但每列的元素之间存在不必要的间隙。
QUERY( ... ,,5000)
是一个直接的黑客攻击。它采用先前的查询结果,并将所有列及其条目连接成一行单元格。下面添加了一个管道来表示该行中的新单元格。注意条目之间的空格。
Components B G |Networking D |Other F |Servers A |Workstations A C E
TRANSPOSE( ... )
获取此行结果并将其转换为列。
Components B G Networking D Other F Servers A Workstations A C E
SPLIT( ... ," ")
将文本分隔为整齐的列。忽略多个空格字符。注意:如果没有被ARRAYFORMULA()
包围,则不会显示此功能和以下功能。
Components B G Networking D Other F Servers A Workstations A C E
TRANSPOSE( ... )
将所有内容放回列中:
Components Networking Other Servers Workstations B D F A A G C E
最后,我们删除下划线并使用SUBSTITUTE( ... ,"_"," ")
替换空格,并用ARRAYFORMULA()
包围所有内容,以便显示。