=IF(อายุ>=18, IF(สัญชาติ="ไทย","ผ่าน","ไม่ผ่าน"),"ไม่ผ่าน") .. มีสูตรที่ดีกว่า?
โพสต์นี้มีเจตนาอยากให้เลือกใช้สูตรที่ทำงานตรงตามความเป็นจริง สูตรจะได้ให้ความหมายตรงกับเหตุการณ์จริงด้วย ไม่ควรคิดแต่เพียงว่าสูตรทำงานหาค่าได้คำตอบที่ต้องการเท่านั้นครับ
การใช้ IF ซ้อน IF นั้น Excel จะไล่เปรียบเทียบจาก IF ตัวนอกสุดหรือที่ยู่ทางซ้ายสุดก่อน แล้วจึงใช้เงื่อนไขใน IF ตัวถัดไป
ส่วนการใช้ And OR นั้น ทุกเงื่อนไขในวงเล็บ ถือว่ามีความสำคัญเท่ากัน
ปัญหาเรื่องอายุกับสัญชาตินี้ น่าจะเรียงเงื่อนไขจากสัญชาติก่อน ถ้าผ่านจึงดูที่อายุต่อ ตามแบบนี้
=IF(สัญชาติ="ไทย", IF(อายุ>=18, "ผ่าน","ไม่ผ่าน"),"ไม่ผ่าน")
เพราะในคูหาเลือกตั้ง ต้องหยิบบัตรประชาชนไทยขึ้นมาก่อน ถ้าไม่มีก็หมดสิทธิ์ แต่ถ้ามีบัตรจึงตรวจอายุต่อไป
แต่ถ้าในกลุ่มคนที่มารอนั้น เรามั่นใจว่าส่วนใหญ่เป็นคนไทยอยู่แล้ว ก็ควรใช้สูตรเทียบอายุก่อนเลย เพื่อตัดจำนวนคนที่อายุไม่เข้าเกณฑ์ทิ้งไปก่อน จากนั้นจึงมาเทีบสัญชาติ
การใช้ And OR ต้องระวังหากบางเงื่อนไขเกิด Error จะส่งผลให้ทั้งสูตรไม่ทำงาน แต่ถ้าใช้ IF ซ้อน IF แล้วมีบางเงื่อนไขเกิด Error ก็ยังทำงานได้ในเงื่อนไขอื่น
เวลาเจอสูตร IF ซ้อนกันให้มองแบบนี้
ทุก IF ที่ซ้อนกันต้องการคำตอบแบบเดียวกันใช่ไหม ถ้าใช้ให้ผ่าน แต่ถ้าไม่ใช่ ไม่ผ่าน
หากเจอแบบนี้ ไม่จำเป็นต้องใช้ IF ซ้อน IF แต่ให้ใช้สูตร IF เดียวโดยนำ And มาช่วยกลายเป็นแบบนี้
=IF( AND(อายุ>=18, สัญชาติ="ไทย"), "ผ่าน", "ไม่ผ่าน")
Excel ถือว่าเงื่อนไขที่อยู่ในวงเล็บของ And OR นั้นทุกเงื่อนไขจะนำมาหาคำตอบพร้อมกันทุกเงื่อนไขครับ
ระหว่าง
=IF(AND(อายุ>=18, สัญชาติ="ไทย"),"ผ่าน","ไม่ผ่าน") กับ
=IF(AND(สัญชาติ="ไทย",อายุ>=18),"ผ่าน","ไม่ผ่าน")
Excel ไม่ได้ทำงานต่างกัน แต่การใช้ IF ซ้อน IF จะมีลำดับการทำงานไล่ไปทีละตัวจาก IF ตัวนอกสุดก่อน