我正在寻找将表格转入 Excel 中的其他选项卡的方法。
我的第一个表:
First_Name | Last_Name | Company | Number | Done (1 = yes / 0 = no)
-----------------------------------------------------
Allison | Dark ! McDonald | 2,00 | 1
John | Doe | Amazon | 10,00 | 1
Julian | Smith | Coca Cola | 3,00 | 0
Kathy | Johnson | Coca Cola | 20,00 | 1
Barbara | Brown | Tesco | 10,00 | 0
Alexander | Lee | Amazon | 4,00 | 0
Harry | Moore | Amazon | 8,00 | 0
如何在其他选项卡中检索这些数据,如下所示:
Company | Number of names | Done | Sum of Numbers
------------------------------------------------------
Amazon | 3 | 1 on 3 | 22,00
Coca Cola | 2 | 1 on 2 | 23,00
McDonald | 1 | 1 on 1 | 2,00
Tesco | 1 | 0 on 1 | 10,00
我正在寻找一个公式,但它也可以用 VBA 编写。 感谢您的帮助。
最佳答案
假设问题中列出的标签没有 Excel 版本限制。这是REDUCE/VSTACK
模式的另一个应用,你可以查看我对以下问题的回答:how to transform a table in Excel from vertical to horizontal but with different length 。该公式会溢出整个结果,包括标题并返回按公司名称排序的结果。穿上G1
以下内容:
=LET(in, A1:E8, h, TAKE(in,1), data, DROP(in,1), cmp, INDEX(data,,3),ux,
SORT(UNIQUE(cmp)), done, INDEX(data,,5), amnt, INDEX(data,,4),
header, {"Company","Number of Names","Done","Sum of Numbers"}, CALC, LAMBDA(x,
LET(a, cmp=x, b, SUM(N(a)), c, SUM((a)*(done=1)),
HSTACK(x, b, c&" on "&b,SUM(a*amnt)))), REDUCE(header, ux, LAMBDA(ac,x,
VSTACK(ac, CALC(x)))))
注意:更新了查看@VBasic2008的公式,我意识到可以首先对公司进行排序,这样可以减少公式。
用户LAMBDA
函数CALC
进行计算,在REDUCE
的每次迭代中生成整行。我们不能使用 header 来初始化累加器(ac
),因为我们需要先对结果进行排序。
关于excel - 如何转置Excel中其他选项卡中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75890308/