批量求平均學分績點
案例目的
通過表格數據批量求出每個同學的平均學分績點
數據集(百度網盤提取碼:jxxp )
案例背景介紹
本案例數據來源於某校2018級學生期末考試,已經過脫敏化處理,並相對此案例教程做了少許修改。
分數-績點轉化規則
分制 | 成績/對應績點 | 分數段 | ||||
---|---|---|---|---|---|---|
百分制 | 成績 | 100-90 | 89-80 | 79-70 | 69-60 | <60 |
百分制 | 對應績點 | 5.0-4.0 | 3.9-3.0 | 2.9-2.0 | 1.9-1.0 | 0 |
五級制 | 成績 | 優秀 | 良好 | 中等 | 及格 | 不及格 |
五級制 | 對應績點 | 4.5 | 3.5 | 2.5 | 1.5 | 0 |
二級制 | 成績 | 合格 | 不合格 | |||
二級制 | 對應績點 | 3 | 0 |
主修專業課程認定
主修專業課程是指本專業指導性教學計劃所要求的課程。
在本案例中爲:
課程 | 學分 | 備註 |
---|---|---|
體育2 | 1 | (多項,需合併) |
大學英語 | 2 | (多項,需合併) |
面向對象程序設計 | 2.5 | |
離散結構 | 3 |
平均學分績點計算公式
數據處理
現有表格數據未經處理,較爲混亂,在使用公式前需要清洗。
空值的處理
成績表中有大量不需計入的選修課程,直接刪除即可。
需合併的課程
可以發現,直接對空數據位進行函數運算會報#VALUE!需要將空數據位用0填補。
選中所有數據位,查找內容缺省,全部替換爲0即可。
特殊值處理
對於不及格的分數,需要用0替換:
新建一個sheet,在sheet2中選中左上角位置,輸入函數:
=if(logical_test,[value_if_true],[value_if_false])
- =:表示輸入的是函數而不是文本
- if:對分數值進行判斷
- Sheet1!:跨sheet時使用
- Excel對於大小寫不敏感
- 單元格位置可以通過點擊相應位置或用鍵盤進行插入
- logical_test:判斷的內容,在本例中爲是否小於60
- [value_if_true]:如果爲真,替換成的內容,本例中爲0
- [value_if_false]:如果爲假,替換成的內容,本例中爲原值
IF 函數是 Excel 中最常用的函數之一,它可以對值和期待值進行邏輯比較。
因此 IF 語句可能有兩個結果。 第一個結果是比較結果爲 True,第二個結果是比較結果爲 False。
例如,=IF(C2=”Yes”,1,2) 表示 IF(C2 = Yes, 則返回 1, 否則返回 2)。
if函數-Office支持
對單個單元格操作完成後,用單元格右下角拉柄批量操作
多列值合併
新建英語列,體育列,輸入函數並批量操作同上
=sum(number x:number y)
-number x:起始單元格位置
-number y:結束單元格位置
SUM 函數是一個數學和三角函數,可將值相加。 你可以將單個值、單元格引用或是區域相加,或者將三者的組合相加。
例如:
=SUM(A2:A10)
=SUM(A2:A10, C2:C10)
SUM函數-Office支持
計算平均學分績點
數據經過清洗後,可以進行進一步計算。
分數轉績點
輸入函數,判斷,批量操作均如上 (其實篩特殊值可以留到這一步)
補入學分並加權平均
需要另添加多列學分值,並用函數批量計算
SUMPRODUCT(array1,array2)
- array1:第一個數列,本例中爲成績列
- array2:第二個數列,本例中爲學分列
SUMPRODUCT函數返回對應的區域或數組的乘積之和。 默認運算是乘法,但加、減和除也可能。執行其他算術運算:
按正常方式使用 SUMPRODUCT,但將數組參數替換爲所需的算術運算符(*、/、+、-)。 執行所有操作後,結果將按常規方式進行求和。
注意:
如果使用算術運算符,請考慮將數組參數括在括號中,並使用括號對數組參數進行分組以控制算術運算的順序。
備註:
數組參數必須具有相同的維數。 否則,函數 SUMPRODUCT 將返回 #VALUE! 錯誤值 #REF!。 例如,= SUMPRODUCT (C2: C10,D2: D5)將返回錯誤,因爲範圍大小不同。
SUMPRODUCT 將非數字數組條目視爲零。
SUMPRODUCT函數-Office支持
注意事項
表格中的公式問題
消除公式
表中值均包含公式,可能會影響計算。
我們可以新建一個sheet,把數值複製並選擇性粘貼以消除公式。
粘貼保留格式
不選擇只保存數字,可能出現#REF!錯誤,或者出現不期望的數值。