Excel 使用公式排序

图片中,当H3输入1时,I列从C列找有1的单元格在A列单元格的位置的数值,同时J列也会找C列有1的单元格后一列的数值10. 以此逻辑,K3输入2时,L列从E列找有2的单元格在A列单元格的位置的数值,同时J列也会找E列有2的单元格后一列的数值20.
谢谢大家的帮忙
现在有个重点,如果H3输入2时,同样也能得图片中的结果

    按公式为成绩排名,虽然大家知道RANK能用来排名,但是却不能处理复杂排名,这里小便提供一个简单公式: =RANK(B2,$B$2:$B$12)

    下面来详细解释,如何操作。看下面这幅图,排名有相同的成绩,这是简单rank不能处理的问题。所以要用复杂rank才可以处理

     B2指开头第一位成绩,B是成绩栏

     B12指最后一位成绩

    =RANK(B2,$B$2:$B$12),按这个步骤,可以在C2放入这个公式,回车即可。得出为5。如果不能显示,请查看公式复制时是否把空格给复制了。

    最后,下拉排名就ok了,鼠标放在黑点处,点左键下拉即可,成绩就这样简单的出来啦。相同排名的也向后拉了一位,看图就知道了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-12

C2=INDEX(A:A,MOD(LARGE(B$2:B$6+ROW(B$2:B$6)%%,ROW(A1)),1)*10000)

数组,以Shift+Ctrl+Enter结束输入。向下填充

第2个回答  2019-02-17

I3公式:=IFERROR(INDEX($A:$A,SMALL(IF($C$3:$C$100=$H$3,ROW($3:$100),""),ROW(A1))),"")

J3公式:=IFERROR(INDEX($D:$D,SMALL(IF($C$3:$C$100=$H$3,ROW($3:$100),""),ROW(A1))),"")

L3公式:=IFERROR(INDEX($A:$A,SMALL(IF($E$3:$E$100=$K$3,ROW($3:$100),""),ROW(A1))),"")

M3公式:=IFERROR(INDEX($F:$F,SMALL(IF($E$3:$E$100=$K$3,ROW($3:$100),""),ROW(B1))),"")

以上都是数组公式,输完公式后需光标停留再编辑栏,ctrl+shift+回车,全部下拉即可。

追问

你好,有办法做到H3输入2也能得到后面得结果

追答

I3公式:=IFERROR(INDEX($A:$A,SMALL(IF(($C$3:$C$100=$H$3)+($E$3:$E$100=$H$3),ROW($3:$100),""),ROW(A1))),"")

J3公式:=IFERROR(INDEX(IF($H$3=1,$D:$D,IF($H$3=2,$F:$F)),SMALL(IF(($C$3:$C$100=$H$3)+($E$3:$E$100=$H$3),ROW($3:$100),""),ROW(A1))),"")

ctrl+shift+回车,全部下拉即可。

第3个回答  2019-02-17
如果数据越多的话,能不用数组公式的尽量不要用数据公式,不然数组公式过多的话,很容易造成表格卡顿。
I3用数组公式:(公式输入I3然后按SHIFT+CTRL+回车退出单元格)
=IFERROR(INDEX(A:A,SMALL(IF(C$3:C$12=H$3,ROW($3:$12)),ROW(1:1))),"")
J3公式:
=IFERROR(VLOOKUP(I3,A$3:D$13,4,),"")
L3用数组公式:(公式输入L3然后按SHIFT+CTRL+回车退出单元格)
=IFERROR(INDEX(A:A,SMALL(IF(E$3:E$12=K$3,ROW($3:$12)),ROW(1:1))),"")
M3公式:
=IFERROR(VLOOKUP(L3,A$3:F$13,6,),"")
最后下拉填充公式即可。
注意:J和M列用VLOOKUP可解决,前提是A列的编号不能有重复。追问

你好,有办法做到H3输入2也能得到后面得结果

本回答被提问者采纳
第4个回答  2019-02-18
以前做报表的时候写过一个公式,忘记详细内容了,以下是思路
1.首先,对要排序的内容进进条件检查,去除空的单元格。主要function:countif 条件判断公式,获取非空单元格数量备用。
2.用if判断,如果第一条返回的结果大于1,说明数据有排序的必要。如果等于1,就一个数据,没必要排序。然后在对单元格进行填充,比如填充成1,2,3,4,5等,确定大小顺序。
3.用rank对数据进行排序
完成

以上,可用于生成自动排序的数据,如果配合柏拉图,效果极佳
相似回答