วันเสาร์ที่ 19 พฤษภาคม พ.ศ. 2555

การใช้ Calc ตัดเกรดนักศึกษา

ปิดภาคฤดูร้อนที่ผ่านมาต้องสอนภาคฤดูร้อนเพราะใจอ่อนไม่เข้าท่า ทำให้งานหลาย ๆ อย่างเสียกระบวนไปพอสมควร บางทีนักศึกษาก็ไม่ค่อยเข้าใจนึกว่าปิดเทอมอาจารย์จะว่างกัน แต่จริง ๆ แล้วมีงานหลายอย่างเลยนะครับที่ผมต้องทิ้งไปเลยเพื่อสอนภาคฤดูร้อนให้ได้ผล

ผมยอนใจอ่อนสอนเองไม่ตำหนิว่าเป็นความผิดของนักเรียนหรอก แต่เอาเถอะ บันทึกไว้เสียหน่อยก็แล้วกันว่าจะสอนยอมภาคฤดูร้อนเป็นครั้งสุดท้ายแล้ว อย่างไรเสียแม้ว่าการสอนจะเป็นความรับผิดชอบของเรา แต่การเรียนก็เป็นความรับผิดชอบส่วนตนของนักศึกษา จะเรียนตกเรียนหล่นในเทอมปกติแล้วจะมาจับตัวเองเป็นตัวประกันในเทอมฤดูร้อนนั้นไม่ได้ และการสอนภาคฤดูร้อนก็ไม่ใช่หน้าที่รับผิดชอบของอาจารย์นะ (มหาวิทยาลัยกำหนดงานอาจารย์ในช่วงนี้ไว้ให้แล้วครับ - ไม่ใช่ว่าจะว่าง) งานของใครก็งานของมันนะครับนักเรียน รับผิดชอบงานในส่วนของตัวเองด้วย

บ่นพอแล้ว อยากจะแบ่งประสบการณ์การใช้ Calc ของ LibreOffice ในการตัดเกรดโดยกึ่งอัตโนมัติสู่กันฟังสักนิดหนึ่ง วิธีที่นำมาแบ่งปันนี้ได้รับแนวทางมาจาก วิธีการคำนวณคะแนนและเกรด

การตัดเกรดแบบกึ่งอัตโนมัติที่ว่านี้หมายถึงให้อาจารย์เป็นคนกำหนดช่วงคะแนนสำหรับแต่ละเกรดในตารางเองนะครับ จากนั้นให้ Calc รวมคะแนนของนักเรียนแต่ละคนและจำแนกตามช่วงคะแนนว่าเด็กแต่ละคน ๆ นั้นจะได้เกรดเท่าไร ซึ่งทำได้ดังนี้ครับ

ทำตารางคะแนนของนักเรียนขึ้นมาเสียก่อน จะมีคะแนนเท่าใด สอบเท่าใดก็ว่ากันไป แต่สุดท้ายให้รวมให้ได้ 100 คะแนนเต็ม ดังตัวอย่าง
จากนั้นทำตารางช่วงคะแนนสำหรับแต่ละเกรดไว้ที่ใดที่หนึ่ง อาจจะต่อท้ายตารางคะแนนหรือจะเอาไว้อีกแผ่นงาน (Sheet) หนึ่งเลยก็ได้ แต่สิ่งสำคัญคือเกรดต้องเรียงจากน้อยไปหามาก ให้คอลัมน์ซ้ายมือเป็นคะแนนต่ำสุดที่จะได้เกรดนั้น ๆ และคอลัมน์ขวาเป็นเกรดนั้น ๆ ดังรูป
ไปที่ เกรด แถวแรก (ในตัวอย่างคือเซล r2) ใช้ฟังก์ชัน vlookup เพื่อเทียบช่วงคะแนน
ซึ่งเราสามารถเขียนเป็นฟังก์ชันลงในเซล 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 ของเรานี้มีการเรียงค่าจะน้อยไปหามาก ข้อสุดท้ายนี้จำเป็นเนื่องจากคะแนนอาจมีหลากหลายค่า ไม่ตรงกันกับค่าในตาราง กระบวนการค้นหาจะไล่ค้นหาจากน้อยไปหามาก ก็คือหาจากข้างบนลงข้างล่างนั่นเองและจะคืนค่าที่น้อยกว่าที่ใกล้ที่สุดให้
เมื่อได้เกรดในเซล r2 แล้วก็สามารถคัดลอกสูตรในเซลนี้ไปยังแถวอื่น ๆ ได้
จะขออธิบายการทำงานของฟังก์ชันนี้โดยใช้ตัวอย่างคะแนนในเซล 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
อันที่จริงจากการลองผิดลองถูกเอง ผมได้ทดลองใช้ฟังก์ชัน if ซ้อน if ถึง 7 ชั้นด้วยกัน ซึ่งก็สามารถใช้งานได้แต่จะผิดพลาดได้ง่ายมาก เลยยังไม่ค่อยพอใจเท่าไร หลังจากนั้นจึงได้พบกับตัวอย่างของ vlookup ในภายหลัง แม้ว่าจะมีหลายคนทำเป็นวิดีโอและเว็บแล้ว ผมก็อยากจะบันทึกเก็บไว้เป็นอีกเสียงหนึ่ง เผื่อว่ามีใครหาคำว่า "ใช้ calc ตัดเกรด" จะได้หาข้อมูลเจอได้เร็วและไม่ต้องเสียเวลาไปเหมือนผมอีก
 
หมายเหตุ
  1. เซลในตัวอย่างกระโดดจาก i ไป r เพราะผมมีบางเซลที่ซ่อนไว้ไม่เกี่ยวกับงานนี้ครับ
  2. ในโปรแกรมจำพวกกระดานคำนวณ (Spreadsheet) อื่น ๆ ก็ทำได้เช่นเดียวกันนะครับ วิธีก็น่าจะคล้าย ๆ กันนั่นแหละ เดี๋ยวจะมาหาว่าผมเชียร์ LibreOffice จนออกนอกหน้า

ไม่มีความคิดเห็น: