10块钱能买什么礼品:请教用excel自动排名

来源:百度文库 编辑:高校问答 时间:2024/04/27 17:38:06
笔者认为无论对原数据清单进行排序或筛选最好不要破坏原清单的原貌。EXCEL的函数十分丰富,不用宏,用函数也能解决数值自动排名。方法如下。 如第一行为表头,A列(例如A2:A101,下同)为姓名,B列数据,在C2单元格输入公式“=IF(A2=0,0,INT(CONCATENATE(INT(B2),200-ROW(A1))))”。公式中ROW(A1)为A1单元格所在的行数即为1,(该公式下拉时依次为2、3、4.....),用200来减是为了CONCATENATE函数中的第2个参数保持3位数,CONCATENATE函数是一个拼合函数这里把B列的数据和它所在的行数拼合成一个数据。这样在对它进行排序后该数据包含了它所在行数的信息。CONCATENATE函数INT函数套用是为了把原来的文本变为数字。 在D2单元格输入公式“=LARGE(C:C,ROW(A1))”即对B列数值(包含所在行的信息)按大小排列。 在F2单元格(为了与原始清单分开中间空了一列)输入公式“=IF(D2=0,0,200-RIGHT(D2,3))”,函数 RIGHT(D2,3)即为D2单元格数据的后3位数,用200来减即为此数据所在的行数。 在G2单元格输入公式“=IF($F2=0,0,INDEX($A$2:$B$15,$F2,COLUMN(A1)))”,并拖到H2单元格。INDEX函数为引用函数,即根据F2单元格所标明的行数在$A$2:$B$15单元格矩阵中引用姓名及得分。 在I2单元格输入公式“=IF(H2=0,0,IF(H2=H1,I1,ROW(A1)))”,本来G、H列就是按得分大小排列的,但可能有平列名次,所以选用上述公式。 最后把C2到I2单元格的公式下拉,程序就完成了。
本人按这个方法使用的时候出现如下问题,请高手请教!!
当数据为整数的时候,结果没有问题,但当数据为小数时候,排名的结果就不对了,请高手指教啊。谢谢!

假定B列数据有1位小数,请将C2单元格公式改为:
=IF(A2=0,0,INT(CONCATENATE(B2*10,200-ROW(A1))))

注:如B列有两位小数,就将*10改为*100