EXCEL中,某列既有重复数据,同时又需要从大到小排序,之后再根据排序后的结果返回对应值?

例:A列为序号:1、2、3、4、5、6、7、8;
B列:10、30、20、25、30、10、25、10;
求解列:C列为:根据B列的数据先从大到小排序后,再返回对应A列的序号。重复数据不能遗漏。希望公式返回的C列的结果为:2、5、4、7、3、1、6、8,而不是:2、2、4、4、3、1、1、1。即重复部分最好能随机排序并返回对应值,而不是一直返回第一次出现该数据的返回对应值。求高人指点。只是惭愧,没有财富值。望好心人帮忙。
备注:上次 fjmxwrs大师给了个公式,=INDEX(A:A,RIGHT(LARGE(RANK(B$1:B$8,B:B,1)/1%+ROW($1:$8),ROW()))),计算基本正确,但是我在最上面插入行之后,即报错。再请高人指点。最好是可以在这个数组区域外随意添加行或者列。谢谢

第1个回答  2011-08-18
C1公式:
=INDEX(A:A,MATCH(LARGE($B$1:$B$100-ROW($B$1:$B$100)/10^4,ROW(1:1)),$B$1:$B$100-ROW($B$1:$B$100)/10^4,),)
数组公式,按CTRL+SHIFT+ENTER结束
下拉填充追问

可我一旦在第一行上面在插入一行,数据就报错呢,如果插入两行,数据更是不对,请问我该怎么改?

追答

=INDEX($A$1:$A$100,MATCH(LARGE($B$1:$B$100-ROW($B$1:$B$100)/10^4,ROW(1:1)),$B$1:$B$100-ROW($B$1:$B$100)/10^4,),)
不管在上面插入多少行都可以,只要把公式中的ROW(1:1)保持不变就行

本回答被提问者采纳
第2个回答  2011-08-18
公式写的很漂亮。
如果是在AB二列下面接着输入数据,你可以把公式修改为
=INDEX(A:A,RIGHT(LARGE(RANK(INDIRECT("B1:B"&COUNTA(B:B)),B:B,1)/1%+ROW(INDIRECT("B1:B"&COUNTA(B:B))),ROW(A1))))
当然你输入数据后要保证C列公式下拉与B列持平行数
如果你在中间或者顶端插入数据
那你不能选中行号进入插入空行
只可以选中某行的AB二个单元格,右键插入追问

同样如果我在最上面随意插入几行,并且B行数据也是没有规律的整数,比如:1、3、5、3、8、2、16、5等等。请问大师怎么改写公式?

追答

我把公式修改为自动判断AB二列最后一行数据了
不需要再修改公式了。
我上面讲的很清楚了。
AB二列接着向下输入数字即可
如果前面插入,需要选中AB这一行的二个单元格进行插入,不可以选中行号插入,那样公式就断开了。

追问

不好意思,而我需要的恰恰是在行号上插入新行(当然是在数组区域外),因为我的数据行并不是从第一行开始的,我的提问只是列举了一组例子,实际数据,我是从第66行到98行的一组数据。A66:1 B66:222,A67:2 B67:214,A68:3 B68:253,A69:4 B69:222,A70:5 B70:222,A71:6 B71:214,......A98:33 B98:188。
另外,我需要在该数组区域外任意添加行或者列。比如在A55或者A33上面直接加入行。求大师指点。

第3个回答  2017-10-23
可以操作,你看一下我昨天的知道的回答就可以了。