基本上,我有这样的excel表 -
A B C D
16 14 13 12
14 14 13 14
16 14 15 12
14 14 15 14
我希望excel表显示这个 -
A B C D
16 14 13 12 A B C D
14 14 13 14 A B D C
16 14 15 12 A C B D
14 14 15 14 C A B D
换句话说,在每一行旁边,我想要列名的降序。我该如何实现这一目标?我尝试了几种不同的方式进行排序,但没有一个在另一列中给出列名,就像我想要的那样。请帮忙。
我使用Excel 2007。
修改
经过this post后,我用了
=INDEX(L$1:S$1,MATCH(LARGE(L42:S42,1),L42:S42,0))
=INDEX(L$1:S$1,MATCH(LARGE(L42:S42,2),L42:S42,0))
=INDEX(L$1:S$1,MATCH(LARGE(L42:S42,3),L42:S42,0))
=INDEX(L$1:S$1,MATCH(LARGE(L42:S42,4),L42:S42,0))
显示与每行中4个最大值对应的列名。但话说回来,当两个或更多的值相等时,我得到这样的输出 -
A B C D
16 14 13 12 A B C D
14 14 13 14 A A A C
16 14 15 12 A C B D
14 14 15 14 C A A A
如何解决此问题以获得我想要的输出(我在开头说过)?
答案 0 :(得分:2)
在确定LARGE
st值时,您必须考虑值的位置。如果值相等,那么您必须确定第一个相等的值是否也应该在列表中排在第一位。
如果只有整数值,那么我们可以将值的位置作为小数位。
示例:
E2
中的公式,已复制到E2:H5
:
{=INDEX($A$1:$D$1,MATCH(LARGE($A2:$D2+(10-COLUMN($A2:$D2))/10,E$1),$A2:$D2+(10-COLUMN($A2:$D2))/10,0))}
这是一个数组公式。输入时不带花括号,然后按[Ctrl] + [Shift] + [Enter]完成。
仅适用于最多10列。如果有更多列,则(10-...)/10
部分必须更改为(100-...)/100
。
在此示例中,第一个相等的值也位于列表中的第一位。如果列表中的最后一个相等值出现在第一位,则删除10-
部分。
使用条件格式可以突出显示具有相同值的列名。
E2:H6
。=COUNTIF($A2:$D2,INDEX($A2:$D2,MATCH(LARGE($A2:$D2,E$1),$A2:$D2,0)))>1
答案 1 :(得分:1)
答案已被接受,这是一个很好的答案,但为了我自己的娱乐,我会发布一个变体: -
=INDEX($A$1:$D$1,MATCH(0,IF($A2:$D2=LARGE($A2:$D2,COLUMN()-COLUMN($E2)),COUNTIF($E2:E2,$A$1:$D$1),1),0))
这使用标准的COUNTIF / MATCH方法来消除有关系时已经输入的列,并且不对数字的大小做出任何假设。
同样,它是一个数组公式,必须使用 Ctrl Shift 输入
输入