ถ้าคุณคุ้นเคยกับการใช้สูตร If, And, Or, Choose, VLookup, Match, Index มาบ้าง เคยตอบตัวเองบ้างไหมครับว่าทำไมจึงเลือกใช้สูตรนั้น ทำไมจึงไม่เลือกใช้สูตรนี้ คงไม่ใช่ว่าใครถนัดสูตรใดก็เลือกใช้สูตรนั้น บทความนี้จะมาหาสาเหตุกันว่า อะไรหนอที่เป็นตัวกระตุ้นทำให้สมองของเราต้องคิดถึงสูตรนั้นๆนำมาใช้ ถ้าสมองของคุณไม่ยอมรับวิธีที่ผมจะเล่าให้ฟัง เอาเป็นว่าเป็นเรื่องมาจากวิธีที่สมองของผมคิดแล้วกัน

ก่อนอื่นเวลาผมเขียนชื่อสูตรจะใช้อักษรตัวใหญ่นำหน้าตัวเล็กเสมอเพื่อทำให้เหมือนกับคำที่เขียนให้อ่านกันทั่วไป บางทีจะใช้ตัวใหญ่นำแต่ละคำในสูตร เช่น VLookup จะได้เห็นแล้วสมองเข้าใจได้ว่าสูตรนี้ประกอบด้วย 2 หลักตามตัว V ที่ย่อมาจาก Vertical กับตัว Lookup ซึ่งดีกว่าจะเขียนตัวใหญ่ VLOOKUP ทั้งหมดซึ่งไม่ได้ช่วยให้สมองสงสัยอะไร แต่เวลาที่พวกเราพิมพ์สูตรลงไปในเซลล์ต้องพิมพ์ด้วยตัวเล็กตลอด เช่น vlookup เพราะเมื่อพิมพ์สะกดถูกต้องพอสร้างสูตรเสร็จแล้วกด Enter จะเห็นอาการที่ Excel แสดงออกถึงการยอมรับโดยเปลี่ยนเป็น VLOOKUP ตัวใหญ่ให้เอง

มองแว้บแรก ง่ายๆก็ต้อง If

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

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

ถ้าเงื่อนไขที่ใช้นั้นไม่ได้ตัดสินใจแบบเท่ากับ แต่เป็นการตัดสินใจในเงื่อนไขแบบ > หรือ >= หรือไม่เท่ากัน ซึ่งมีแต่สูตร If เท่านั้นที่จะทำได้ โจทย์แบบนี้ต้องใช้ If เสมอ หนีไปใช้สูตรอื่นไม่ได้เลย (อาจจะมีสูตรอื่นก็ได้ แต่สมองของผมไม่อยากวุ่นวายไปใช้สูตรอื่น) เงื่อนไขจะยากเย็นซับซ้อนขนาดไหนก็จำเป็นต้องหาทางนำสูตร If มาใช้ซ้อนๆกันเข้าไป

ทำไมน่ะเหรอ ถ้าเงื่อนไขที่ใช้ในการตัดสินใจเป็นแบบเท่ากับ จะมีสูตรอื่นให้เลือกใช้เยอะแยะไปหมด ถ้าตัดสินใจแบบ < หรือ <= สามารถหนี If ไปใช้สูตร VLookup แทนได้

อย่าใช้ If ซ้อน If ถ้าทางออกเหมือนกันทุก If

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

ถ้าทางออกของทุก If เหมือนกันทุก If ก็ไม่จำเป็นต้องเสียแรงสร้าง If ซ้อนกันหรอกครับ ให้ใช้สูตร And หรือ Or ซ้อนเข้าไปใน If แค่สูตร If เดียวแบบต่อไปนี้ ง่ายกว่าเยอะเลย

=If( And(เงื่อนไขต่างๆนาๆ), ทางออกกรณีใช่, ทางออกกรณีไม่ใช่)

แต่ใช่ว่าสูตร And Or จะเป็นพระเอกช่วยทำให้ใช้สูตร If แค่สูตรเดียวก็พอเสมอไป เพราะยังขึ้นกับเงื่อนไขที่ใช้ในสูตร And Or ด้วยว่าต้องเป็นเงื่อนไขที่มีความสำคัญแบบเท่าเทียมกันเท่านั้นด้วยครับ

ถ้าเงื่อนไขเป็นแบบต้องตรวจสอบว่าต้องผ่านทีละขั้น จากการตรวจสอบขั้นแรก เมื่อผ่านแล้วจึงตรวจสอบต่อขั้นที่สอง พอผ่านขั้นที่สองแล้วจึงตรวจสอบต่อขั้นที่สาม ผ่านทีละขั้นไปเรื่อยๆแบบนี้ แม้ทางออกของทุกเงื่อนไขจะเหมือนกันก็ตาม ยังไงๆก็จำเป็นต้องใช้ If ซ้อน If จะหนีไปใช้ And Or มาช่วยตรวจสอบเงื่อนไม่ได้

ถ้าใครอ่านแล้วสมองทำท่าทางงุนงง ผมเคยเขียนอธิบายพร้อมตัวอย่างไว้ที่เว็บนี้ครับ เขียนไว้นานแล้วล่ะ เพียงแต่อธิบายแบบต่างมุมกันไปเท่านั้น

https://www.excelexperttraining.com/forums/content.php?r=139-excel-formula-function

เมื่อคิดจะซ้อน If ต้องเปิดโอกาสให้เงื่อนไขของ If ทุกตัวทำงาน

เมื่อใดที่จำเป็นต้องสร้างสูตร If ซ้อนกันหลาย If ในเซลล์เดียวกัน ลำดับของ If ตัวแรกสุดจากนอกสุดไปสู่ If ตัวในสุดต้องมีเงื่อนไขที่ไม่ขัดกันหรือแย่งชิงการทำงานจนทำให้ If ตัวในหมดโอกาสใช้ในการตัดสินใจ กล่าวอีกนัยหนึ่งคือต้องเปิดโอกาสให้เงื่อนไขของ If ทุกตัวทำงาน เช่น ถ้าใช้ในการตัดเกรด ต้องจัดให้เงื่อนไขของ If ตัวแรกสุดตรวจสอบคะแนนที่สอบได้ว่า >=90 หรือไม่ จากนั้นเงื่อนไขของ If ถัดไปตรวจสอบ >=70, >=50, >=30 ตามนี้

=If( คะแนนที่สอบได้ >=90, "A", If(คะแนนที่สอบได้ >=70,"B",If เงื่อนไขถัดไป...) )

แต่ถ้ากำหนดเงื่อนไข >=30 ขึ้นก่อน ย่อมปิดโอกาสให้เงื่อนไขที่เหลือไม่ให้ได้ทำงาน เนื่องจากเงื่อนไข >=30 ย่อมหมายถึง >=50, >=70 และ >=90 ไปแล้ว ทำให้สูตร If ที่ซ้อนกันทำงานไม่สมบูรณ์

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

If+IsError vs IfError หรือหาทางป้องกันที่เหตุดีกว่าไหม

การแก้ Error เป็นเงื่อนไขที่มักนำมาใช้บ่อยๆเรียกว่าเป็นขาประจำของสูตร โดยนำสูตรตรวจสอบว่าเป็น Error เช่น IsError มาใช้ตรวจสอบเงื่อนไขในสูตร If ว่าเป็น Error หรือไม่ เช่น =If( IsError(สูตรที่ต้องการตรวจสอบ), 0, สูตร) หรือตั้งแต่ Excel 2007 เป็นต้นมามี IfError เป็นสูตรใหม่ที่สั้นลง =IfError(สูตรที่ต้องการตรวจสอบ,0) ซึ่งตามตัวอย่างนี้หากพบว่าสูตรที่นำมาตรวจสอบทำให้เกิด Error ขึ้นก็จะส่งค่าเท่ากับ 0 แทน

การผสมสูตรแบบ =If( IsError(สูตรที่ต้องการตรวจสอบ), 0, สูตร) มีข้อดีเหนือว่าการใช้สูตร IfError

  1. คุณสามารถเลือกเฉพาะส่วนของการคำนวณที่เป็นต้นเหตุแห่ง Error มาใช้ตรวจสอบเท่านั้น แต่ถ้าจะใช้สูตร IfError จำเป็นต้องยกสูตรเต็มๆที่ใช้หาคำตอบมาใช้ตรวจสอบ
  2. เมื่อตรวจสอบพบว่าไม่ Error สามารถกำหนดให้คำนวณตามสูตรอื่น แต่สูตร IfError จะคืนค่าตามสูตรเดิมที่ใช้ตรวจสอบเท่านั้น
  3. เป็นสูตรที่สามารถนำไปใช้ได้กับ Excel ทุกรุ่น ซึ่งถ้าต้องสร้างแฟ้มเพื่อส่งต่อให้คนอื่นใช้ก็ไม่ควรใช้สูตร IfError

แทนที่จะต้องเสียเวลามาตรวจสอบว่าเป็น Error หรือไม่ ควรหาทางป้องกันที่ต้นเหตุของการเกิด Error จะเหมาะกว่า เมื่อป้องกันที่ต้นเหตุได้แล้วย่อมลดความจำเป็นที่จะต้องใช้สูตร IsError หรือ IfError มาช่วยอีกต่อไป โดยใช้คำสั่ง Data > Validation มาช่วยตรวจสอบตั้งแต่การบันทึกข้อมูลลงไปในเซลล์

เอกลักษณ์ของสูตร If ที่เหนือกว่าสูตร Choose, VLookup หรืออื่นๆ

ก่อนจะหนีสูตร If ไปอธิบายสูตรอื่น คำถามตามหัวเรื่องนี้น่าจะนำไปใช้ในการสอบสัมภาษณ์ คุณล่ะครับทราบหรือไม่ว่าสูตร If มีเอกลักษณ์อะไรที่แตกต่างจากสูตรอื่น เป็นสิ่งที่ทำให้สูตร If ยังคงเป็นสูตรที่จำเป็นต้องนำมาใช้

  1. สูตร If สามารถใช้กับค่าที่เซลล์กระจายกันอยู่หรือจะติดกันเป็นตารางเดียวกันก็ได้
  2. สูตร If สามารถผสมเงื่อนไขได้ทุกแบบ ตั้งแต่ = > < >= <= <>
  3. เมื่อซ้อน If จะทำให้สามารถใช้ตัดสินใจต่างเรื่องกัน เช่น เงื่อนไขแรกเป็นเรื่องของจำนวนสินค้า เงื่อนไขที่สองเป็นเรื่องของชื่อสาขา (ข้อนี้สำคัญที่สุด)

อยากเป็นเจ้านาย ต้องรู้จักแยกตัวแปรออกนอกสูตร

ถ้าคุณอยากจะเป็นเจ้านายทำงานแบบสบายๆ ไม่ต้องเสียเวลามานั่งอยู่หน้าจอคอมพิวเตอร์แทบทั้งวัน ต้องฝึกใช้สูตรให้เป็นโดยเฉพาะอย่างยิ่งสูตรที่ใช้ในการตัดสินใจ เพื่อปล่อยให้ Excel ทำงานเองแบบอัตโนมัติ แต่ถ้าคุณไม่ใส่ใจเรียนรู้สูตรเพราะคิดว่ายาก หรือคิดว่าสามารถใช้คำสั่งบนเมนูทำงานแทนได้ คุณจะกลายเป็นลูกน้องของ Excel ไปชั่วชีวิต เพราะงานใดก็ตามที่ทำผ่านเมนูจะไม่สามารถหาคำตอบใหม่ให้ทันทีเมื่อเงื่อนไขต่างไปจากเดิมจนกว่าจะถูกเรียกใช้คำสั่งบนเมนูใหม่ทุกครั้ง ต่างจากสูตรซึ่งจะคำนวณใหม่หรือดึงข้อมูลตามเงื่อนไขใหม่ให้เองโดยอัตโนมัติ แต่จะเป็นเจ้านายได้ตลอดไปต้องรู้จักแยกตัวแปรออกนอกสูตรอีกด้วย

=If( คะแนนที่สอบได้ >=90, "A", If(คะแนนที่สอบได้ >=70,"B",”C”) )

สูตร If ซ้อนกันที่เห็นนี้เขียนขึ้นมาเพื่อใช้ในการอธิบายเท่านั้นว่าในการตัดเกรด A B C ต้องไล่เงื่อนไขให้ If ทำหน้าที่ตัดสินใจแต่ละขั้นไว้เช่นไร แต่เวลาสร้างจริงอย่าสร้างแบบนี้ อย่าพิมพ์ตัวเลขคะแนนที่สอบได้ ตัวเลข 90, 70, หรือตัวอักษรของเกรด A B C ลงไปในวงเล็บ แต่ต้องสร้างสูตรโดยใช้การลิงก์ค่ามาจากเซลล์อื่นมาใช้อ้างอิงลงไปแทน กลายเป็นแบบนี้

=If( A2 >=F2, G2, If( A2 >=F3, G3, G4 ) )

A2 คือ เซลล์คะแนนที่สอบได้

F2, F3 คือ เซลล์เลขคะแนน 90, 70 ตามลำดับ

G2, G3, G4 คือ เซลล์ชื่อเกรด A, B, C ตามลำดับ

เมื่อลิงก์ค่าจากเซลล์มาใช้ในสูตรแล้วต้องการเปลี่ยนตัวเลขเงื่อนไขหรือเกรด ให้แก้ไขโดยพิมพ์ค่าใหม่ทับลงไปในเซลล์ที่ลิงก์มา

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

ทำบุญไว้เยอะๆจะได้ใช้ Excel สบายๆ

เวรกรรมมีจริง ใครไม่เชื่อแต่ผมเชื่อ คนที่จะโชคดีได้พบเจอครูอาจารย์ที่ดี ได้เรียนรู้วิธีการใช้ Excel ที่ถูกต้อง พอเห็นตัวอย่างหรือได้รับคำแนะนำไม่กี่คำก็เข้าใจง่าย คนที่จะมีโอกาสแบบนี้ขึ้นกับบุญกรรมที่ทำมาของตัวเอง หลายคนกว่าจะเจอสูตรง่ายๆที่ลัดตัดตรงกลับถูกกรรมมาบังตาทำให้หลงไปใช้สูตรที่ตัวเองหลงเชื่อว่าดีสุดๆ ใครจะมาว่ากล่าวตักเตือนแค่ไหนก็ยังเชื่อแบบหัวปักหัวปำ ไม่ยอมเปลี่ยนมาใช้สูตรที่ดีกว่า เรื่องแบบนี้บางทีก็ต้องปล่อยเขาไป รอไว้จนกว่าจะถึงจังหวะเวลาที่บุญของเขาจะมาช่วยเสริม

บางคนโชคดีแต่ยังคงโชคร้าย สามารถใช้สูตร Offset หรือ Indirect ดึงข้อมูลตามเงื่อนไขมาจากตารางในแฟ้มอื่นได้ ฝึกใช้สูตรนี้จนชำนาญจนมั่นใจว่าตัวเองเก่ง Excel ถึงขั้นเป็นที่หนึ่งของบริษัท นึกว่าวิธีใช้สูตรของ Excel เป็นเรื่องธรรมดาที่ต้องเปิดแฟ้มต้นทางขึ้นมาก่อน โดยหารู้ไม่ว่า ยังมีสูตรอื่นที่ทำงานได้เหมือนกันโดยไม่ต้องเสียเวลาเปิดแฟ้มต้นทางขึ้นมาด้วยซ้ำ ที่มารู้ตัวได้เนี่ยก็ต่อเมื่อได้เห็นคนอื่นที่เขามีบุญมากกว่ามาทำให้ดู

ตัวผมเองสมัยที่เพิ่งเริ่มจับ Excel ก่อนโน้นไม่เคยใช้สูตร VLookup เพราะได้อ่านตำราที่ไม่ได้ใช้ VLookup เวลาที่ผมจะดึงข้อมูลอะไรออกมาใช้งานก็จะใช้สูตร Match มาใช้งานร่วมกับสูตร Index กลายเป็นว่าแฟ้มงานที่ผมสร้างขึ้นสามารถทำงานได้อย่างยืดหยุ่นมากๆ จะแก้อะไรหรือโยกย้ายตารางไปไว้ที่อื่น สูตรที่สร้างไว้ก็ยังคงใช้งานได้อย่างถูกต้องเสมอ ต่อมาภายหลังจึงรู้ว่ามีสูตร VLookup ซึ่งยังไงๆก็ยังสู้สูตร Match Index ไม่ได้ นี่เรียกว่าเป็นความโชคดีของผม มาจากบุญที่ทำไว้

หากคุณได้อ่านบทความนี้หรือได้เรียนรู้จากผมก็แสดงว่าเราเคยทำบุญร่วมกันมาก่อน เป็นโชคดีของคุณ เป็นหนึ่งในผู้โชคดีซึ่งปกติมีจำนวนคนไม่มากนักหรอก

จากนี้ไปเราจะเลิกใช้สูตร If หนีไปใช้สูตรอื่นที่ทำงานได้ดีกว่า ง่ายกว่า แต่ก็มีข้อสังเกตที่ต้องดูให้ดีก่อนที่จะเปลี่ยนไปใช้สูตรอื่น

โยน If ทิ้งไป เมื่อเงื่อนไขเป็นเลขลำดับ 1 2 3 4 5 …

ถ้าใช้สูตร If กับเงื่อนไขที่เป็นเลขลำดับ โดยมีเงื่อนไขให้ตรวจสอบตัวเลขลำดับตั้งแต่เลข 1 - 13 ว่าเมื่อตรวจสอบตัวเลขแล้วพบว่าตรงกับเลขที่กำหนดไว้จริงให้แสดงค่าที่ลิงก์มาตามที่กำหนดไว้ให้คู่กับเลขลำดับแต่ละตัว หน้าตาสูตรจะเป็นแบบนี้

=IF(E9=1,C2,IF(E9=2,C5,IF(E9=3,C8,IF(E9=4,C11,IF(E9=5,C14,IF(E9=6,C17,IF(E9=7,F2,
IF(E9=8,F17,IF(E9=9,I2,IF(E9=10,I5,IF(E9=11,I8,IF(E9=12,I11,IF(E9=13,I14,I17)))))))))))))

สังเกตให้ดีว่า ทุกเงื่อนไขในสูตรนี้ตรวจสอบค่าจากเซลล์ E9 ว่ามีค่าเท่ากับ 1, 2, 3, ตามลำดับจนถึงเลข 13 หรือไม่ ถ้าตรวจสอบแล้วว่าใช่ก็จะคืนค่าที่บันทึกไว้ในเซลล์ C2, C5, C8, หรือเซลล์อื่นๆ ซึ่งมีตำแหน่งเซลล์กระจายกันไป ไม่ได้อยู่ในพื้นที่ตารางที่ติดกัน

แทนที่จะเสียแรงเสียเวลาสร้างสูตร If ซ้อนกันหลายชั้น ให้จำหลักไว้ว่า ถ้าเงื่อนไขเทียบกับเลขลำดับใช้เรื่องเดียวกันตลอด (E9 เรื่องเดิมเรื่องเดียว) ส่วนผลลัพธ์ที่ต้องการมาจากเซลล์ที่กระจายกันไม่ได้อยู่ติดกัน เราสามารถใช้สูตร Choose แทนตามนี้

=Choose( E9, C2,C5,C8,C11,C14,C17,F2,F17,I2,I5,I8,I11,I14,I17 )

สูตร Choose จะทำหน้าที่สมชื่อของมันโดยเลือกคำตอบตามตัวเลขที่มาจากเซลล์ E9 ซึ่งจะเลือกตามลำดับของเซลล์ที่ใส่ไว้ที่เห็นว่าคั่นด้วยเครื่องหมายคอมมา ดังนั้นลำดับค่าที่เป็นคำตอบจากเซลล์ C2,C5,C8,C11,C14,C17,F2,F17,I2,I5,I8,I11,I14,I17 จึงต้องจัดลำดับตามไว้ให้ถูกต้องด้วย ถ้าสลับลำดับกันก็จะผิดทันที ซึ่งสูตร Choose สามารถเลือกค่าคืนคำตอบได้สูงสุด 254 ค่า ซึ่งถ้าใช้กันเต็มทั้ง 254 ค่า กว่าจะมั่นใจว่าใส่แต่ละค่าไว้ถูกลำดับคงต้องตรวจสอบซ้ำกันหลายรอบทำให้มึนกันไปเลย

แทนที่จะใช้สูตร Choose แทน If หากคำตอบที่ต้องการตามตัวเลขลำดับนั้นไม่ใช่ค่าที่อยู่ในเซลล์กระจายกัน แต่บันทึกไว้ในตารางติดกันตามแนวตั้งโดดๆ (Single Column) หรือแนวนอนโดดๆ (Single Row) ให้เปลี่ยนมาใช้สูตร Index แทนจะง่ายกว่าและสะดวกต่อการตรวจสอบได้ชัดเจนกว่า Choose หรือ If

สูตรที่ดึงค่าตามแนวตั้ง เช่น =Index(A1:A14,E9)
หรือ
สูตรที่ดึงค่าตามแนวนอน เช่น =Index(A1:N1,E9)

อ่านรายละเอียดได้จาก

https://www.excelexperttraining.com/forums/content.php?r=259-IF-Choose-Index 

นิสัยเอาแต่ใจของหัวหน้า ตัวชี้ขาดว่าสูตรจะอยู่หรือไป

ในบรรดาสูตรทั้งหลายที่ใช้ในการตัดสินใจนั้น สูตร If กับ Choose ถือเป็นสูตรที่ใช้ตามใจหัวหน้าได้ดีที่สุด เพราะเมื่อหัวหน้าอยากจะโยกย้ายเซลล์ที่ถูกอ้างอิงในวงเล็บของสูตรไปวางไว้ที่ตำแหน่งอื่น ต่อให้ย้ายไปวางที่ชีทอื่นหรือแฟ้มอื่น สูตร If กับ Choose ก็ยังคงทำหน้าที่คำนวณหาคำตอบได้ถูกต้องตามเดิมเสมอ ทั้งนี้ต้องอยู่ภายในลักษณะที่ว่า ตำแหน่งเซลล์ที่กำหนดไว้ในวงเล็บของสูตร If กับ Choose นั้นต้องเป็นการอ้างอิงแบบเซลล์เดียวด้วย เช่น

=IF(E9=1,C2,IF(E9=2,C5,IF(E9=3,C8,IF(E9=4,C11,IF(E9=5,C14,IF(E9=6,C17,IF(E9=7,F2,
IF(E9=8,F17,IF(E9=9,I2,IF(E9=10,I5,IF(E9=11,I8,IF(E9=12,I11,IF(E9=13,I14,I17)))))))))))))

=Choose( E9, C2,C5,C8,C11,C14,C17,F2,F17,I2,I5,I8,I11,I14,I17 )

หากตำแหน่งการอ้างอิงภายในวงเล็บของสูตรมีลักษณะเป็นพื้นที่ตารางติดต่อกันตั้งแต่ 2 เซลล์ขึ้นไป แทนที่จะใช้สูตร If หรือ Choose มากำหนดตำแหน่งอ้างอิงทีละเซลล์ เราสามารถเลือกใช้สูตรอื่นซึ่งรองรับกับตำแหน่งการอ้างอิงแบบที่เป็นตารางติดกันหลายเซลล์ได้สะดวกกว่า ซึ่งมีข้อดีทำให้สูตรสั้นลงอย่างมาก แต่เมื่อโยกย้ายพื้นที่ตารางหรือมีการแทรกเซลล์อื่นเข้ามาเพิ่มระหว่างพื้นที่ตารางเดิมที่อ้างอิงไว้ในสูตร อาจส่งผลทำให้สูตรคำนวณผิดพลาดขึ้นมาอย่างไม่รู้ตัว ดังนั้นหัวหน้าที่อยากได้โน่นได้นี่ อยากได้ตารางสวยๆตามใจชอบ ต้องอย่าปล่อยให้ใช้ Excel แบบตามใจตัวเองมากเกินไปนัก

DecisionFunctions

ตามภาพรูปที่สองจากซ้าย ถ้าตารางมีพื้นที่ติดกันเป็นแนวตั้งหรือแนวนอน เราสามารถใช้สูตร Index ดึงข้อมูลที่เก็บไว้ตามเลขลำดับรายการ โดยสูตร Index ถือว่าเซลล์แรกบนสุดหรือซ้ายสุดของพื้นที่อ้างอิงเป็นลำดับที่ 1 เสมอ ถ้าอยากจะย้ายตารางไปวางที่อื่นก็ต้องย้ายพื้นที่ตารางทั้งหมดที่อ้างอิงในสูตรไปด้วยกัน ถ้ามีการ Sort, Insert หรือ Delete เซลล์ทิ้ง (ต่างจากการลบข้อมูลทิ้ง) ย่อมทำให้ลำดับผิดได้ทันที

ในกรณีที่โครงสร้างตารางเป็นรูปสี่เหลี่ยมผืนผ้า สามารถเลือกใช้สูตร VLookup หรือ Match Index ช่วยค้นหาค่าจาก column อื่นตามเงื่อนไขได้

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

แต่ถ้าตารางยังขาดมาตรฐานหรือหัวหน้ายังให้คำตอบไม่ได้ว่าอีกหน่อยจะสั่งให้สลับย้ายที่ column หรือไม่ หรือไม่มั่นใจว่าผู้ใช้แฟ้มในอนาคตจะเผลอย้ายตำแหน่ง column ก็ไม่ควรเลือกใช้ VLookup เด็ดขาด ให้เปลี่ยนไปใช้สูตร Match เพื่อหาตำแหน่งลำดับรายการจาก column ที่เก็บค่าตามเงื่อนไขเอาไว้ พอได้ตำแหน่งลำดับรายการแล้วจึงนำไปใช้ต่อในสูตร Index

ถ้าใช้ Index แบบตารางหลาย column ติดกัน ก็ต้องควบคุมเลขที่ของ column จึงแนะนำให้ใช้ Index แบบ column เดียวตามภาพที่ 2 แทนจะได้ไม่ต้องห่วงว่าจะถูกใครมาสลับ column

 

 

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

E-Learning

Go to top