在Excel表格中数据的排序是一个经常使用的功能。如果需要对实时更新的数据排序,你是否还在更新一次数据、排序一次?今天我们就通过一个实例来学习一个使用函数制作的在添加数据之后可以实时更新的排序。
一.实例要求:
下图是某公司员工的工作记录表,每完成一个任务老板都会根据任务的难度和完成情况评分。现要求根据每个员工各个任务的总评分进行实时的升序排序(新增任务评分之后自动更新),用于统计工作难度和下次分配任务。
二.动态效果演示:
为了直观的显示变化,使用RANDBETWEEN函数随机生成一个评分、按F9键可以实时更新。
三.操作步骤:
1.利用row函数为每个人的总评分加一个不重复的非常小的数值。(只有构造不重复的评分,在使用Vlookup函数查找时才不会出现错误。)
(1)在第一个人员后总评分下单元格输入公式
=SUM(C2:XFD2)+ROW()/100000
(2)公式说明:XFD是工作表所有单元的最后一列、row()函数返回当前单元格所在的行。
(3)向下填充公式计算所有员工的总评分。
2.对总分按照升序排序。
(1)在难度统计工作表的的B2单元格输入公式
=SMALL(INDIRECT("工作记录表!$B$2:B" & COUNTA(工作记录表!$A:$A)),ROW(B1))
(2)公式说明:
①INDIRECT("工作记录表!$B$2:B" & COUNTA(工作记录表!$A:$A))函数返回的是第一个工作表里A2到A列最后一个非空单元格的间接引用。
②Small和Row函数配合使用提取①引用的单元格区域的第row()函数返回的行个最小值。(row函数向下填充时返回123的数字序列,从而实现升序排列)
(3)向下拖动填充公式,直到出现错误值。
(4)添加一个数据条直观的显示数据的变化。
3.根据总分查找对应姓名:
(1)在A2单元格输入公式:
=VLOOKUP(B2,IF({1,0},INDIRECT("工作记录表!$B$2:B" & COUNTA(工作记录表!$A:$A)),INDIRECT("工作记录表!$A$2:A" & COUNTA(工作记录表!$A:$A))),2,0)
(2)公式说明:
①indirect参考步骤2的公式说明。
②IF({1,0}与①所引用的两个单元格区域组合,构造了一个总评分在前、姓名在后的数组。
③利用VLOOKUP函数就可以正常从左向右查找。
(3)向下拖动填充公式,直到出现错误值。
4.添加一个折线图,并修改样式更加直观的显示数据的变化。
总结,这篇文章是由万金油组合公式引申而来,读者朋友有不懂的地方欢迎在评论区留言讨论。