excel 排序问题,高手请进

来源:百度知道 编辑:UC知道 时间:2024/07/04 06:38:58
我用数组公式:{=SUM(IF($I$2:$I$20>I2,1/COUNTIF($I$2:$I$20,$I$2:$I$20)))+1}
进行排序,它是按从大到小的顺序排的(降序),现在我在把数据按从小到大排(升序)如何实现?
我试过,把公式中的>改成<,如果I2:I20都有数据就没问题,但如果有单元格为空的话则出现"#DIV/0!"(除以0),这如果解决?
awerlasdfwe 你答的还是不行哦,你自己试试就知道了
awerlasdfwe你的最后一个公式很好,对正数都适用。但对于i2:i20中出现0或负值时又不行了,此时最小值为0。如何解决?

既然你的数组公式没有问题,可以考虑用下面的数组公式减去你的公式+1
=SUM(IF(COUNTIF($I$2:$I$20,$I$2:$I$20)>1,1/COUNTIF($I$2:$I$20,$I$2:$I$20),COUNTIF($I$2:$I$20,$I$2:$I$20)))

合并起来,公式为
=SUM(IF(COUNTIF($I$2:$I$20,$I$2:$I$20)>1,1/COUNTIF($I$2:$I$20,$I$2:$I$20),COUNTIF($I$2:$I$20,$I$2:$I$20)))-SUM(IF($I$2:$I$20>I2,1/COUNTIF($I$2:$I$20,$I$2:$I$20)))

优化一下
在确定有空值的情况下用下面的公式
=SUM(IF($I$2:$I$20<I2,1/IF($I$2:$I$20<>"",COUNTIF($I$2:$I$20,$I$2:$I$20),1)))

为了更通用一点
=SUM(IF($I$2:$I$20<I2,1/IF($I$2:$I$20<>"",COUNTIF($I$2:$I$20,$I$2:$I$20),1)))+IF(COUNTIF($I$2:$I$20,""),0,1)

再或者彻底换一个算法
=IF(I2="","",SUM(--IF(FREQUENCY(IF($I$2:$I$20<>"",$I$2:$I$20,),IF($I$2:$I$20<>"",$I$2:$I$20,)),IF($I$2:$I$20<>"",$I$2:$I$20,)<I2)))

以上均为数组公式,需要按Ctrl+Shift+Enter结束输入,不然计算不出正确结果,甚至出错。