修复 Google Sheets 公式,以便它将附加从中提取数据的每列的标题,而不仅仅是第一列的标题

问题描述 投票:0回答:1

我有一个 Google Sheet 公式,旨在从一系列列中提取前 5 个值,按列分隔显示每个值,将它们计算为参考列的百分比,并附加每个百分比所来自的列的名称。公式如下:

=TEXTJOIN(", ", TRUE, ARRAYFORMULA(INDEX(C$1:AE$1, MATCH(LARGE(C2:AE2, SEQUENCE(5, 1)), C2:AE2, 0) + COLUMN(C2) - 3) & ": " & ROUND(LARGE(C2:AE2, SEQUENCE(5, 1)) / AH2 * 100, 2) & "%"))

拉取

values
可以正常工作,但它会在每个百分比前面附加 “ColumnC” 的名称,而不是值所在的列标题。

例如:返回的结果应该是这样的:

“苹果:20%,橙子:15%,柠檬:12%,香蕉:10%,葡萄:7%”

但它返回:

“苹果:20%,苹果:15%,苹果:12%,苹果:10%,苹果:7%”

有没有办法解决这个问题,以便它提取每个 % 所属的适当的列标题名称?

谢谢!

编辑:示例数据看起来像这样,抱歉,如果我第一次尝试将其汇总起来:

代码 水果名称 苹果 香蕉 桃子 梨子 柚子 李子 葡萄 芒果 西瓜 柠檬 石灰 普通话 菠萝蜜 蓝莓 菠萝 猕猴桃 博森莓 荔枝 血橙 木瓜 百香果 哈密瓜 塞尔维亚语 蔓越莓 樱桃 克莱门汀 柿子 萨摩 覆盆子 哈密瓜 总水果 前5名
10001 #不适用 12 3 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 5 33 苹果:36.36%、苹果:30.3%、苹果:24.24%、苹果:9.09%、苹果:0%
google-sheets google-sheets-formula
1个回答
0
投票

你可以试试这个:

=JOIN(", ",LET(x, ARRAY_CONSTRAIN(SORT(HSTACK(TOCOL(C1:AG1),TOCOL(C2:AG2)),2,FALSE),5,2), y,BYROW(CHOOSECOLS(x,2), LAMBDA(r, CONCATENATE(ROUND((r/AH2)*100,0),"%"))), BYROW(HSTACK(CHOOSECOLS(x,1),y), LAMBDA(t,JOIN(":",t)))))

示例输出:

Output

请确保范围将相应更改。

参考:

加入

© www.soinside.com 2019 - 2024. All rights reserved.