ผมยอนใจอ่อนสอนเองไม่ตำหนิว่าเป็นความผิดของนักเรียนหรอก แต่เอาเถอะ บันทึกไว้เสียหน่อยก็แล้วกันว่าจะสอนยอมภาคฤดูร้อนเป็นครั้งสุดท้ายแล้ว อย่างไรเสียแม้ว่าการสอนจะเป็นความรับผิดชอบของเรา แต่การเรียนก็เป็นความรับผิดชอบส่วนตนของนักศึกษา จะเรียนตกเรียนหล่นในเทอมปกติแล้วจะมาจับตัวเองเป็นตัวประกันในเทอมฤดูร้อนนั้นไม่ได้ และการสอนภาคฤดูร้อนก็ไม่ใช่หน้าที่รับผิดชอบของอาจารย์นะ (มหาวิทยาลัยกำหนดงานอาจารย์ในช่วงนี้ไว้ให้แล้วครับ - ไม่ใช่ว่าจะว่าง) งานของใครก็งานของมันนะครับนักเรียน รับผิดชอบงานในส่วนของตัวเองด้วย
บ่นพอแล้ว อยากจะแบ่งประสบการณ์การใช้ Calc ของ LibreOffice ในการตัดเกรดโดยกึ่งอัตโนมัติสู่กันฟังสักนิดหนึ่ง วิธีที่นำมาแบ่งปันนี้ได้รับแนวทางมาจาก วิธีการคำนวณคะแนนและเกรด
การตัดเกรดแบบกึ่งอัตโนมัติที่ว่านี้หมายถึงให้อาจารย์เป็นคนกำหนดช่วงคะแนนสำหรับแต่ละเกรดในตารางเองนะครับ จากนั้นให้ Calc รวมคะแนนของนักเรียนแต่ละคนและจำแนกตามช่วงคะแนนว่าเด็กแต่ละคน ๆ นั้นจะได้เกรดเท่าไร ซึ่งทำได้ดังนี้ครับ
ทำตารางคะแนนของนักเรียนขึ้นมาเสียก่อน จะมีคะแนนเท่าใด สอบเท่าใดก็ว่ากันไป แต่สุดท้ายให้รวมให้ได้ 100 คะแนนเต็ม ดังตัวอย่าง
จากนั้นทำตารางช่วงคะแนนสำหรับแต่ละเกรดไว้ที่ใดที่หนึ่ง อาจจะต่อท้ายตารางคะแนนหรือจะเอาไว้อีกแผ่นงาน (Sheet) หนึ่งเลยก็ได้ แต่สิ่งสำคัญคือเกรดต้องเรียงจากน้อยไปหามาก ให้คอลัมน์ซ้ายมือเป็นคะแนนต่ำสุดที่จะได้เกรดนั้น ๆ และคอลัมน์ขวาเป็นเกรดนั้น ๆ ดังรูป
ไปที่ เกรด แถวแรก (ในตัวอย่างคือเซล r2) ใช้ฟังก์ชัน vlookup เพื่อเทียบช่วงคะแนน
ซึ่งเราสามารถเขียนเป็นฟังก์ชันลงในเซล R2 โดยตรงก็ได้ดังนี้
ซึ่งเราสามารถเขียนเป็นฟังก์ชันลงในเซล R2 โดยตรงก็ได้ดังนี้
=vlookup(i2,$S$2:$T$10,2,1)
- i2 นั้นหมายถึงจะร้อยละของคะแนนจากเซล i2 เป็นตัวค้นหา
- $s$2:$T$9 หมายถึงตารางเกรด การที่มีเครื่องหมายดอลลาร์อยู่หน้า S และ 2 หมายถึงเราต้องการจะอ้างอิงตำแหน่งนี้แบบสัมบูรณ์ (Absolute) ไม่ใช่แบบสัมพัทธ์ (Relative) ซึ่งเป็นค่าปริยายของการอ้างถึงตำแหน่ง
- 2 คือเลขคอลัมน์ในตารางเกรดที่จะใช้เป็นค่าส่งคืนของฟังก์ชัน vlookup เมื่อคะแนนใน i2 พบเกณฑ์ของตนเองในตาราง $s$2:$T$9 แล้วจะนำค่าในคอลัมน์นี้ (คือคอลัมน์ที่ 2) ของตารางส่งคืนค่ามาให้ Calc
- 1 ในอาร์กิวเมนต์สุดท้ายเป็นการระบุว่าตารางเกรด $s$2:$T$9 ของเรานี้มีการเรียงค่าจะน้อยไปหามาก ข้อสุดท้ายนี้จำเป็นเนื่องจากคะแนนอาจมีหลากหลายค่า ไม่ตรงกันกับค่าในตาราง กระบวนการค้นหาจะไล่ค้นหาจากน้อยไปหามาก ก็คือหาจากข้างบนลงข้างล่างนั่นเองและจะคืนค่าที่น้อยกว่าที่ใกล้ที่สุดให้
จะขออธิบายการทำงานของฟังก์ชันนี้โดยใช้ตัวอย่างคะแนนในเซล i3 มีค่าเท่ากับ 57.50
- เกณฑ์ค้นหา (อาร์กิวเมนต์ที่ 1) คือ 57.50
- ตารางที่ค้นหา (อาร์กิวเมนต์ที่ 2) คือ s2:t9 ถ้าไม่อ้างตำแหน่งแบบสัมบูรณ์ในเซล r2 เมื่อคัดลอกสูตรมาที่ r3 ตารางจะกลายเป็น r3:t10 ซึ่งไม่ถูกต้อง
- ค่าที่จะเป็นเกรดอยู่ในคอลัมน์ที่ 2 ของตาราง เลข 2 นี้ก็คืออาร์กิวเมนต์ที่ 3 ของฟังก์ชัน
- ค่าที่จะค้นคือ 57.5 การค้นจะไล่จากบนลงล่าง
- ค้นแถวแรกเจอ 0 และ 57.5 มากกว่า 0 vlookup จะเก็บค่า F ไว้
- ค้นแถวที่สองเจอ 45 และ 57.5 มากกว่า 45 vlookup จะเก็บค่า D ไว้
- ค้นแถวที่สามเจอ 50 และ 57.5 มากกว่า 50 vlookup จะเก็บค่า D+ ไว้
- ค้นแถวที่สี่เจอ 55 และ 57.5 มากกว่า 55 vlookup จะเก็บค่า C ไว้
- ค้นแถวที่ห้าเจอ 60 แต่ 57.5 น้อยกว่า 60 vlookup ก็เลยบอกว่าหาไม่เจอแล้ว เอาค่าล่าสุดไปก่อนก็แล้วกัน เราก็จะได้เกรด C คืนกลับมาในเซล r3
หมายเหตุ
- เซลในตัวอย่างกระโดดจาก i ไป r เพราะผมมีบางเซลที่ซ่อนไว้ไม่เกี่ยวกับงานนี้ครับ
- ในโปรแกรมจำพวกกระดานคำนวณ (Spreadsheet) อื่น ๆ ก็ทำได้เช่นเดียวกันนะครับ วิธีก็น่าจะคล้าย ๆ กันนั่นแหละ เดี๋ยวจะมาหาว่าผมเชียร์ LibreOffice จนออกนอกหน้า