บางโจทย์ต้องคิดหลายขั้นกว่าจะได้คำตอบ เช่น “หาค่าเฉลี่ยแล้วปัดเศษ” หรือ “ค้นหาราคา ถ้าไม่เจอให้ขึ้นว่าไม่พบ” แทนที่จะแยกเป็นหลายเซลล์ เราเขียนรวบในเซลล์เดียวได้ด้วยการ ซ้อนฟังก์ชัน (Nested Functions) คือเอาผลลัพธ์ของฟังก์ชันหนึ่งไปเป็นข้อมูลป้อนให้อีกฟังก์ชันหนึ่ง บทความนี้อธิบายหลักการอ่าน เขียน และไล่ตรวจสูตรซ้อนไม่ให้งง
การซ้อนฟังก์ชันคืออะไร
ปกติฟังก์ชันหนึ่งจะรับข้อมูลเข้า (argument) แล้วคืนผลลัพธ์ออกมา การซ้อนฟังก์ชันคือการเอาฟังก์ชันทั้งตัวไปวางไว้ในช่อง argument ของอีกฟังก์ชัน Excel จะคำนวณจากชั้นในสุดออกมาชั้นนอกสุด เหมือนแกะหัวหอมทีละชั้น
เช่น =ROUND(AVERAGE(B2:B5), 0) Excel จะหา AVERAGE(B2:B5) ให้เสร็จก่อน ได้ตัวเลขหนึ่งออกมา แล้วค่อยเอาตัวเลขนั้นส่งให้ ROUND ปัดเศษ
ตัวอย่างที่ 1: เฉลี่ยแล้วปัดเศษในเซลล์เดียว
=ROUND(AVERAGE(B2:B5),0)| A | B | |
|---|---|---|
| 1 | วิชา | คะแนน |
| 2 | ภาษาไทย | 78 |
| 3 | คณิต | 81 |
| 4 | วิทย์ | 74 |
| 5 | อังกฤษ | 66 |
| 6 | เฉลี่ย (ปัดเศษ) | 75 |
ชั้นในสุด AVERAGE(B2:B5) ได้ 74.75 จากนั้น ROUND(74.75, 0) ปัดเป็น 75 อ่านเพิ่มเรื่องการปัดเศษได้ที่ ฟังก์ชัน ROUND และ AVERAGE
ตัวอย่างที่ 2: IF ซ้อน IF สำหรับตัดเกรด
เมื่อมีเงื่อนไขหลายระดับ ให้วาง IF ตัวถัดไปไว้ในช่อง “ค่าถ้าเงื่อนไขเป็นเท็จ” ของ IF ตัวก่อนหน้า
=IF(B2>=80,"A",IF(B2>=70,"B",IF(B2>=60,"C","D")))| A | B | C | |
|---|---|---|---|
| 1 | ชื่อ | คะแนน | เกรด |
| 2 | ก้อง | 83 | A |
| 3 | แนน | 72 | B |
| 4 | เจน | 58 | D |
Excel เช็คจากซ้ายไปขวา ถ้า B2>=80 จริงก็หยุดที่ “A” ทันที ถ้าไม่จริงจึงไปเช็คเงื่อนไขถัดไป สูตรแบบนี้อ่านยากขึ้นเมื่อมีหลายชั้น จึงมีสูตร IFS ที่เขียนเงื่อนไขเรียงกันได้โดยไม่ต้องซ้อนวงเล็บซ้อนกันเป็นพืด
ตัวอย่างที่ 3: ซ้อนเพื่อกัน Error
การซ้อนที่ใช้บ่อยที่สุดคือเอาสูตรค้นหาไปไว้ข้างใน แล้วครอบด้วยตัวจับ Error ข้างนอก
=IFERROR(VLOOKUP(A2,$E$2:$F$9,2,FALSE),"ไม่พบสินค้า")| A | B | C | |
|---|---|---|---|
| 1 | รหัส | ชื่อ | ราคา |
| 2 | P05 | หูฟัง | ไม่พบสินค้า |
| 3 | P01 | เมาส์ | 450 |
ชั้นใน VLOOKUP พยายามหา P05 ในตารางราคา ถ้าไม่เจอจะเป็น #N/A ชั้นนอก IFERROR ดักไว้แล้วเปลี่ยนเป็นข้อความแทน
ตัวอย่างที่ 4: ทำความสะอาดข้อความ 2 ขั้น
=TRIM(SUBSTITUTE(A2,"-"," "))| A | B | |
|---|---|---|
| 1 | ข้อมูลดิบ | จัดรูปแบบแล้ว |
| 2 | 089-123-4567 | 089 123 4567 |
ชั้นใน SUBSTITUTE เปลี่ยนขีด - เป็นเว้นวรรค ชั้นนอก TRIM ตัดช่องว่างส่วนเกินทิ้ง
เทคนิคเขียนและอ่านสูตรซ้อนไม่ให้งง
- เขียนจากข้างในออกข้างนอก — ทำฟังก์ชันชั้นในให้ได้ผลถูกต้องก่อน แล้วค่อยเอาไปครอบด้วยฟังก์ชันชั้นนอกทีหลัง
- กด F9 ประเมินบางส่วน — ขณะแก้สูตร ลากคลุมเฉพาะส่วนที่เป็นฟังก์ชันชั้นใน แล้วกด F9 Excel จะแสดงผลลัพธ์ของช่วงนั้นให้ดู (กด Esc เพื่อกลับมาเป็นสูตรเดิม อย่ากด Enter)
- ใช้ Evaluate Formula — ที่แท็บ Formulas ปุ่ม Evaluate Formula จะไล่คำนวณให้ดูทีละชั้น
- ขึ้นบรรทัดใหม่ในแถบสูตร — กด Alt+Enter ระหว่างพิมพ์สูตร เพื่อจัดสูตรยาวๆ ให้อ่านง่ายเป็นชั้นๆ ไม่กระทบผลลัพธ์
- นับวงเล็บเปิด-ปิดให้เท่ากัน — Excel ช่วยไฮไลต์คู่วงเล็บให้เวลาเลื่อนเคอร์เซอร์ผ่าน
ซ้อนได้ลึกแค่ไหน และเมื่อไรควรเลิกซ้อน
ทางเทคนิค Excel ซ้อนฟังก์ชันได้สูงสุด 64 ชั้น แต่ในทางปฏิบัติถ้าเกิน 3–4 ชั้นก็เริ่มอ่านยากและแก้ยาก ทางเลือกที่ดีกว่าคือ
- แตกเป็นคอลัมน์ช่วย (helper column) — คำนวณทีละขั้นในคอลัมน์แยก แล้วอ้างอิงต่อกัน ดีบักง่ายกว่ามาก
- ใช้ LET — ตั้งชื่อผลลัพธ์กลางทางไว้ในสูตรเดียว ทำให้อ่านเป็นขั้นตอนได้โดยไม่ต้องมีคอลัมน์เพิ่ม
- ใช้ IFS หรือ SWITCH — แทน IF ซ้อน IF หลายชั้น
ก่อนเขียนสูตรซ้อน แนะนำให้เข้าใจเรื่อง ลำดับการคำนวณในสูตร ก่อน จะช่วยให้วางวงเล็บถูกตำแหน่ง