สูตร IF เป็นสูตรที่มีความยืดหยุ่นอย่างมาก เราสามารถใช้ทั้งตัวเลข ตัวอักษร สูตรอื่น หรือตำแหน่งอ้างอิงเพื่อใช้ในการกำหนดเงื่อนไข และสามารถใช้เงื่อนไขเปรียบเทียบค่าได้ทั้งเท่ากับ มากกว่า น้อยกว่า หรือไม่เท่ากับ ซึ่งใน Excel ตั้งแต่รุ่น 2007 เป็นต้นมาได้ปรับปรุงให้สามารถนำสูตรมาซ้อนเข้าไปได้ถึง 64 สูตร ทำให้ใช้สูตร IF ได้กว้างขวางกว่า Excel 2003 หรือรุ่นเก่าก่อนนั้นที่ซ้อนสูตรได้อีกเพียง 7 สูตรเท่านั้น

ไม่ว่าจะใช้สูตร IF ให้เต็มที่ตามความสามารถของ Excel รุ่นเก่าหรือรุ่นใหม่ ถ้าเขียนสูตร IF ซ้อนกันจนกลายเป็นสูตรยาวเหยียดตามสูตรในเซลล์ D9 ต่อไปนี้ คุณคิดว่าอยากจะใช้สูตร IF ต่อไปอีกหรือ

image166

=IF(F9>C9,1,IF(SUM(F9:G9)>C9,2,IF(SUM(F9:H9)>C9,3,IF(SUM(F9:I9)>C9,4, IF(SUM(F9:J9)>C9,5,IF(SUM(F9:K9)>C9,6,IF(SUM(F9:L9)>C9,7,0)))))))

+IF(SUM(F9:L9)>C9,0,IF(SUM(F9:M9)>C9,8,IF(SUM(F9:N9)>C9,9, IF(SUM(F9:O9)>C9,10,IF(SUM(F9:P9)>C9,11,IF(SUM(F9:Q9)>C9,12, IF(SUM(F9:R9)>C9,13,0)))))))

+IF(SUM(F9:R9)>C9,0,IF(SUM(F9:S9)>C9,14,IF(SUM(F9:T9)>C9,15, IF(SUM(F9:U9)>C9,16,IF(SUM(F9:V9)>C9,17,IF(SUM(F9:W9)>C9,18, IF(SUM(F9:X9)>C9,19,0)))))))

+IF(SUM(F9:X9)>C9,0,IF(SUM(F9:Y9)>C9,20,IF(SUM(F9:Z9)>C9,21, IF(SUM(F9:AA9)>C9,22,IF(SUM(F9:AB9)>C9,23,IF(SUM(F9:AC9)>C9,24, IF(SUM(F9:AD9)>C9,25,0)))))))

+IF(SUM(F9:AD9)>C9,0,IF(SUM(F9:AE9)>C9,26,IF(SUM(F9:AF9)>C9, 27,IF(SUM(F9:AG9)>C9,28,IF(SUM(F9:AH9)>C9,29,IF(SUM(F9:AI9)>C9,30, IF(SUM(F9:AJ9)>C9,31,0)))))))

สูตรข้างต้นเป็นสูตรคำนวณหาวันที่ใดในแต่ละเดือนซึ่งสินค้าที่เก็บไว้ใน Stock จะเริ่มไม่เพียงพอต่อการเบิกใช้ โดยต้องนำสูตร IF มาซ้อนกันเพื่อตรวจสอบยอดเบิกใช้สะสมตั้งแต่วันแรกไปจนถึงสิ้นเดือน เริ่มจากยอดเบิกวันแรกในเซลล์ F9 กลายเป็นยอดเบิกสะสม 2 วันจากเซลล์ F9:G9 หรือยอดเบิกสะสม 3 วันจากเซลล์ F9:H9 เรื่อยไปจนถึง F9:AJ9 ซึ่งเป็นยอดเบิกใช้สะสมถึง 31 ครั้งตามจำนวนวันในแต่ละเดือนมาเทียบกับปริมาณ Stock ในเซลล์ C9

ถ้าใช้ Excel 2003 หรือรุ่นก่อนนั้น ต้องแยกสูตรที่ซ้อนกันชุดละ 7 วัน โดยกำหนดเงื่อนไขในแต่ละชุดว่า หากไม่เป็นจริงให้คืนค่าเท่ากับ 0 โปรดสังเกตว่าในวงเล็บของ IF ที่ซ้อนกันแต่ละชุดนั้นจะลงท้ายด้วย ,0))))))) แล้วจึงนำสูตร IF ที่ซ้อนกันมาบวกเข้าด้วยกัน

โจทย์เดียวกันนี้ หากใช้ Excel 2007 เป็นต้นมา เราสามารถซ้อน IF ลงไปในวงเล็บของสูตร IF ร่วมกันได้สูงสุดถึง 64 สูตรได้เลย ทำให้สูตรสั้นลงบ้างเหลือสูตรตามนี้

=IF(F9>C9,1,IF(SUM(F9:G9)>C9,2,IF(SUM(F9:H9)>C9,3,IF(SUM(F9:I9)>C9,4, IF(SUM(F9:J9)>C9,5,IF(SUM(F9:K9)>C9,6,IF(SUM(F9:L9)>C9,7, IF(SUM(F9:M9)>C9,8,IF(SUM(F9:N9)>C9,9,IF(SUM(F9:O9)>C9,10, IF(SUM(F9:P9)>C9,11,IF(SUM(F9:Q9)>C9,12,IF(SUM(F9:R9)>C9,13, IF(SUM(F9:S9)>C9,14,IF(SUM(F9:T9)>C9,15,IF(SUM(F9:U9)>C9,16, IF(SUM(F9:V9)>C9,17,IF(SUM(F9:W9)>C9,18,IF(SUM(F9:X9)>C9,19, IF(SUM(F9:Y9)>C9,20,IF(SUM(F9:Z9)>C9,21,IF(SUM(F9:AA9)>C9,22, IF(SUM(F9:AB9)>C9,23,IF(SUM(F9:AC9)>C9,24,IF(SUM(F9:AD9)>C9,25, IF(SUM(F9:AE9)>C9,26,IF(SUM(F9:AF9)>C9,27,IF(SUM(F9:AG9)>C9,28, IF(SUM(F9:AH9)>C9,29,IF(SUM(F9:AI9)>C9,30,IF(SUM(F9:AJ9)>C9,31, 0)))))))))))))))))))))))))))))))

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

=(F9<=C9)+(SUM(F9:G9)<=C9)+(SUM(F9:H9)<=C9)+(SUM(F9:I9)<=C9) +(SUM(F9:J9)<=C9)+(SUM(F9:K9)<=C9)+(SUM(F9:L9)<=C9)+(SUM(F9:M9)<=C9)+(SUM(F9:N9)<=C9)+(SUM(F9:O9)<=C9)+(SUM(F9:P9)<=C9)+(SUM(F9:Q9)<=C9) +(SUM(F9:R9)<=C9)+(SUM(F9:S9)<=C9)+(SUM(F9:T9)<=C9)+(SUM(F9:U9)<=C9)+(SUM(F9:V9)<=C9)+(SUM(F9:W9)<=C9)+(SUM(F9:X9)<=C9) +(SUM(F9:Y9)<=C9)+(SUM(F9:Z9)<=C9)+(SUM(F9:AA9)<=C9)+(SUM(F9:AB9)<=C9)+(SUM(F9:AC9)<=C9)+(SUM(F9:AD9)<=C9)+(SUM(F9:AE9)<=C9) +(SUM(F9:AF9)<=C9)+(SUM(F9:AG9)<=C9)+(SUM(F9:AH9)<=C9)+(SUM(F9:AI9)<=C9)+(SUM(F9:AJ9)<=C9)+1

ถ้ายังยาวเกินไปอีก ก็ต้องหันมาใช้สูตร Array กันตามนี้

{=SUM((SUBTOTAL(9,INDIRECT(ADDRESS(ROW(F9),COLUMN(F9)) & ":"&ADDRESS(ROW(F9),ROW(INDIRECT(COLUMN(F9)&":"&COLUMN(AJ9))))))<=C9)*1)+1}

Author: สมเกียรติ ฟุ้งเกียรติEmail: This email address is being protected from spambots. You need JavaScript enabled to view it.

E-Learning

Go to top