基本目标
做一个简单快速的评级工具。
希望做到评价人在区域(1)中输入单项评价,区域(3)中自动计算并输出综合评价。
比较麻烦的一点是,评价须采用ABCD&正负偏离的形式,即A+、A、A-、B+、……
字符评价,可以在一个评分中体现两级评价,先粗略确定评价区间,再确定处于评价区间的上中下游位置
采用字符评价的好处在于可以快速区分评价层级和定位
思路
- 首先字符不能直接参与计算
- 可考虑:输入字符→映射数字→计算结果→根据结果数值判断区间→输出字符
输入字符+计算
方法一
通过查找资料发现下述公式可基本实现,类似赋值或映射的功能
=SUMPRODUCT(LOOKUP((A2:N2),{"a","b","c","d";1,2,3,4}))
翻译一下:
由A2到N2查找(LOOKUP),单元格中如果出现"a",“b”,“c”,“d”,则分别采用1,2,3,4参与计算
正好是我所需要的,于是根据需求修改为:
=SUMPRODUCT(LOOKUP((C3:F3),{"A+","A","A-","B+","B","B-","C1+","C","C-","D+","D","D-";12,11,10,9,8,7,6,5,4,3,2,1}))/4
实际执行过程中发现:
A+、A、A-不能同时出现的评分里,计算会出错
方法二
重新查找资料,找到另一种实现方法
=sumproduct((b8:d8=a$1:a$5)*$b$1:$b$5)/counta(b8:d8)
根据需求修改公式:
=SUMPRODUCT((C3:F3=J$3:J$14)*$K$3:$K$14)/COUNTA(C3:F3)
根据计算结果+输出字符
这个部分没查资料,直接用最粗暴的IF逻辑判断
基本型
=IF(条件,Ture执行,False执行)
编写公式
=IF(G3>=11.5,"A+",IF(G3>=10.5,"A",IF(G3>=9.5,"A-",IF(G3>=8.5,"B+",IF(G3>=7.5,"B",IF(G3>=6.5,"B-",IF(G3>=5.5,"C+",IF(G3>=4.5,"C",IF(G3>=3.5,"C-",IF(G3>=2.5,"D+",IF(G3>=1.5,"D","D-")))))))))))
总结
- LOOKUP函数似乎不支持“A+”、“A”同时出现,有可能符号“+”“-”在运算过程中,被特殊处理(没找到具体原因,有清楚的小伙伴欢迎留言)
- 方法二成立的前提,需要提前设定个映射表,稍有不便,但暂时没有更好的办法(也欢迎留言,共同学习)
- 上述方法基本可以实现字符评价的输入和输出,可以用于员工绩效评价或其他评级。