“อยากรู้ว่ายอดขายของลูกค้าเจ้านี้จัดเป็นลำดับที่เท่าไรของทั้งหมด ควรเขียนสูตรยังไง?” พี่บีถาม
“ใน Excel มีฟังก์ชัน RANK ช่วยหาลำดับที่ของข้อมูลได้ครับ” ผมตอบ
“มันมี RANK ตั้ง 3 ตัว ต้องใช้ตัวไหนอ่ะ?”
Rank 3 ตัว ที่พี่บีพูดถึง คือแบบนี้ครับ
“ใช้ RANK.EQ ครับพี่” ผมตอบ
“แล้วทำไมไม่ใช้ RANK ล่ะ?” พี่บีซักต่อ
“RANK เป็นฟังก์ชันของ Excel เวอร์ชันตั้งแต่ 2007 ลงไป ตอนนี้พี่ใช้ Microsoft 365 ใช้ RANK.EQ ดีกว่าครับ” ผมตอบ
“แล้วมันต่างกับ RANK.AVG ยังไง?”
เป็นคำถามที่ดีมาก
ถ้าเปิด Help ดู ไมโครซอฟท์อธิบาย RANK.EQ ไว้แบบนี้
RANK.EQ function – Office Support
ส่วน RANK.AVG ไมโครซอฟท์อธิบายไว้แบบนี้
RANK.AVG function – Office Support
ถ้าใครอ่านแล้วงง (เหมือนผม T_T) ขออธิบายด้วยตัวอย่างนี้ เข้าใจแน่นอนครับ
สมมติมีข้อมูล 10 ค่าแบบนี้
สังเกตดี ๆ จะพบว่ามีตัวเลขแค่ 7 ตัว
คือมีแค่ 1, 2, 3, 4, 5, 6, 7
แต่ 2 ซ้ำกัน 4 ตัว
ถ้าใช้ฟังก์ชัน RANK.EQ และ RANK.AVG ผลลัพธ์ที่ได้จะต่างกันแบบนี้
จะเห็นว่า ถ้าใช้ฟังก์ชัน RANK.EQ กับ 2 ผลลัพธ์ที่ได้คือ 6
แต่ถ้าใช้ฟังก์ชัน RANK.AVG กับ 2 ผลลัพธ์ที่ได้คือ 7.5
ทำไมจึงเป็นเช่นนั้น?
คำตอบก็คือความแตกต่างของ RANK.EQ และ RANK.AVG
ถ้าเป็น RANK.EQ กรณีที่มีค่าซ้ำกัน จะส่งค่าดีที่สุดของลำดับที่ซ้ำกันกลับมา
แต่ถ้าเป็น RANK.AVG กรณีที่มีค่าซ้ำกัน จะส่งค่าเฉลี่ยของลำดับที่ซ้ำกันกลับมา
จากข้อมูลที่ให้มาทั้งหมด 10 ค่า
1 คือข้อมูลที่มีค่าน้อยที่สุด เพราะฉะนั้นลำดับของ 1 คือ 10
2 มีซ้ำกัน 4 ค่า เพราะฉะนั้น ลำดับที่ได้คือ 9, 8, 7, 6
ถ้าใช้ RANK.EQ จะส่งค่าที่ดีที่สุดกลับมา ซึ่งค่าที่ดีที่สุดของ 9, 8, 7, 6 ก็คือ 6
แต่ถ้าใช้ RANK.AVG จะส่งค่าเฉลี่ยของลำดับที่ซ้ำกันกลับมา โดยคิดค่าเฉลี่ยแบบนี้
=(9+8+7+6)/4
= 7.5
ในทางปฏิบัติน่าจะต้องการคำตอบเป็น 6 ส่วนใหญ่จึงใช้ RANK.EQ
แต่ก็อาจมีเคสที่ต้องการคำตอบเป็น 7.5 เอ็กเซลก็เลยจัด RANK.AVG มาให้ด้วย
ในแง่ของโครงสร้าง ทั้ง 2 ฟังก์ชันใช้โครงสร้าง (ไวยากรณ์) เดียวกันเป๊ะ คือ
=RANK.EQ( ค่าที่ต้องการรู้ลำดับ , ข้อมูลทั้งหมด , [ประเภทของลำดับ] )
=RANK.AVG( ค่าที่ต้องการรู้ลำดับ , ข้อมูลทั้งหมด , [ประเภทของลำดับ] )
โดย [ประเภทของลำดับ] มี 2 แบบ คือ 0 กับ 1 (รวมถึงเลขอื่นๆที่ไม่ใช่ 0)
0 คือให้เรียงลำดับจาก มาก ไปหา น้อย
1 คือให้เรียงลำดับจาก น้อย ไปหา มาก
ถ้าใส่เป็นเลขอื่นๆที่ไม่ใช่ 0 ก็จะได้ผลลัพธ์เหมือน 1
เช่น ใส่ 2 ก็จะได้การเรียงลำดับจากน้อยไปหามากเหมือน 1
ในกรณีที่ไม่ใส่ [ประเภทของลำดับ] ลงไปในสูตร หรือใส่ ค่าที่ต้องการรู้ลำดับ กับ ข้อมูลทั้งหมด แค่ 2 อย่างแล้วปิดวงเล็บเลย (เช่น ตัวอย่างข้างบน) เอ็กเซลจะ “ติ๊ต่าง” ว่าต้องการให้เรียงข้อมูลจาก มาก ไปหา น้อย
(เสมือนว่าใส่ [ประเภทของลำดับ] เป็น 0)
ลองดูตัวอย่างจากภาพด้านล่างได้เลย
ไม่ยากใช่ไหมครับ ^__^
ส่วนฟังก์ชัน RANK (ไม่มี .EQ หรือ .AVG ต่อท้าย) วิธีการใช้และผลลัพธ์เหมือน RANK.EQ แต่อาจมีบั๊กนิดหน่อย ไมโครซอฟต์จึงพัฒนาเป็นฟังก์ชัน RANK.EQ แทน
พูดง่าย ๆ คือ RANK.EQ, RANK.AVG เป็นเวอร์ชันอัพเดตของ RANK นั่นเอง
มีข้อควรระวังนิดนึงคือ ถ้านำไฟล์ที่มีฟังก์ชัน RANK.EQ หรือ RANK.AVG ไปเปิดด้วยเอ็กเซลเวอร์ชันเก่า หรือเวอร์ชันตั้งแต่ 2007 ลงไป จะมีปัญหา เพราะเวอร์ชันเหล่านั้นยังไม่มี 2 ฟังก์ชันนี้
อย่างไรก็ตาม ในอนาคตไมโครซอฟท์อาจตัดฟังก์ชัน RANK ทิ้งไป (ตอนนี้ยังปล่อยให้ใช้อยู่) ทางที่ดีหันมาใช้ RANK.EQ หรือ RANK.AVG ดีกว่า
เค้า “ขู่” ไว้แบบนี้ครับ
RANK function – Office Support
Important: This function has been replaced with one or more new functions that may provide improved accuracy and whose names better reflect their usage. Although this function is still available for backward compatibility, you should consider using the new functions from now on, because this function may not be available in future versions of Excel.
น่ากลัวอ่ะ…
ใช้ RANK.EQ ดีกว่าเนอะ ^__^
.
หากคุณชอบบทความแนวนี้ สามารถอัพเดตบทความใหม่โดยคลิก Like เฟซบุ๊กแฟนเพจ วิศวกรรีพอร์ต
อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^__^
เรียน วิศวกรรีพอร์ต
ขอบคุณค่ะ สำหรับข้อมูลดีๆ
ปณิธี
________________________________
ขอบคุณเช่นกันครับ
EQย่อมาจากอะไรหรอคะ
คิดว่าเป็น Equivalent ครับ
หากเราต้องการทำ rank ให้กับ column ที่ข้อมูลเป็น text ต้องใช้ function ไหนครับ
ถ้าต้องการ RANK text ต้องประยุกต์สูตรดังบทความนี้ครับ https://www.get-digital-help.com/how-to-rank-text-uniquely-in-excel/
แต่ถ้าต้องการเรียงข้อมูลตามลำดับตัวอักษร และตอนนี้ใช้ Microsoft 365 แนะนำให้ใช้ฟังก์ชัน SORT ครับ ง่ายและสะดวกมาก
ลองดูไอเดียจากบทความที่ผมเพิ่งเขียนก็ได้ครับ https://reportingengineer.com/2021/01/22/excel-rank-text/
คือเราลองใช้ฟังก์ชันrank.avgค่ะ เพื่อจะเรียงลำดับข้อมูลๆนึงว่าใครได้ที่1 แต่คือมันไม่ปรากฏเลข1ค่ะ มีแค่ที่2 เกิดจากอะไรเหรอคะ ขอบคุณสำหรับคำตอบล่วงหน้านะคะคุณ🙏🏻