告别手工统计!两个函数搞定成绩等级转换与分数段统计

一、背景介绍

在日常教学管理中,每一位教师经常会遇到将学生的原始百分制成绩转换为五级制等级(不及格、及格、中等、良好、优秀)或分数段人数的统计分析的工作。这项基础但频繁的工作,若采用手工操作,不仅效率低下,还容易出现错误。本文将介绍如何利用 LOOKUP 和 FREQUENCY 两个函数,快速、准确地完成成绩等级转换与统计。

二、痛点分析

在实际工作中,教师们常遇到以下问题等级划分规则不统一,手工标记等级效率低,人工采用countif需要多次计算容易漏算、错算。分级规则变更时需要全部重做,灵活性低。

三、解决办法

3.1 等级转换:LOOKUP 函数

假设成绩数据存放在 A 列,等级划分标准如下:

C列

D列

分数区间

不及格

0

0-59

及格

60

60-69

中等

70

70-79

良好

80

80-89

优秀

90

90-100

我们可以在B2中输入以下公式,并拖动填充柄向下填充即可:

💡

=LOOKUP(A2, {0,60,70,80,90}, {"不及格","及格","中等","良好","优秀"})

假如D1:E5已经设置好了分数组,我们也可以采用下面的公式即可。

💡

=LOOKUP(A2,$C$1:$C$5, $D$1:$D$5)

如果遇到错误值LOOKUP函数直接返回#N/A错误值,如下图所示:

3.2 分数段统计:FREQUENCY 函数

首先,设置分段点(各区间的上限),通常我们设定为:0,60,70,80,90,100,考虑到Frequency采用的是左开右闭的分数段,我们可以让每个分数段减去一个很小的数,这样就可以增强其准确性,比如,我们原来的写法是:

💡

=FREQUENCY(A:A, {0,60,70,80,90,100})

如果这样写的话,60分就会被统计成不及格,优化后我们可以这样,把分数段写在C列,这样就可以减少误差,把60统计成及格。

💡

=FREQUENCY(A:A,C1:C5-0.001)

有时,我们在应用此函数时会出现#N/A的情况,如何避免呢,我们可以利用IFNA函数,把错误值转化为空,而Frequency可以忽略空值,就可以更加顺畅地统计分数段了,最终的公式如下:

💡

FREQUENCY(IFNA(A1:.A,""),C1:C5-0.01)

最终效果图如下:

统计区间段还可以用COUNTIFS函数来解决,但较为繁琐。

💡

=COUNTIFS(A:A, ">=0", A:A, "<=59") //统计不及格人数

=COUNTIFS(A:A, ">=60", A:A, "<=69") // 及格

=COUNTIFS(A:A, ">=70", A:A, "<=79") // 中等

=COUNTIFS(A:A, ">=80", A:A, "<=89") // 良好

=COUNTIFS(A:A, ">=90", A:A, "<=100") // 优秀

四、注意事项

  1. LOOKUP 要求升序排列。因此查找向量(如 {0,60,70,80,90})必须严格升序,否则结果不可预测。

  1. FREQUENCY 的分段点是区间上限,且统计时包含等于上限的值。同时,Frequency会额外统计超出最大分段点的数值,建议保留该结果用于检查是否存在超过 100 分的异常数。

  1. 写函数时要注意:确保区间边界连续且无重叠。例如,59 分归为不及格,60 分归为及格,边界清晰。

  1. 同时要注意考虑错误值,可以使用IFNA函数进行过滤。

推荐阅读:

2026年和2025年文章列表

https://www.kdocs.cn/l/ckbnQ4H0SlgU

河南省
浏览 42
收藏
1
分享
1 +1
+1
全部评论