คุณเคยเห็นสูตร Excel แล้วกุมขมับไหมครับ?
เช่น
=IF( AND(A2>=0,A2<10000), “Standard”,IF( AND(A2>=10000,A2<50000), “Black”,IF( AND(A2>=50000,A2<200000), “Silver”,IF( AND(A2>=200000,A2<500000), “Gold”,“Platinum” ))))
เวลาเห็นสูตรแบบนี้ทีไร ผมกุมขมับทุกที T_T
คือสูตรไม่ได้ยาก ไม่ได้มีฟังก์ชันแปลก ๆ แต่เห็นแล้วไม่อยากแกะ เพราะมันลายตา
งั้นทำไงดี?
คำตอบคือจัดฟอร์แมต
วิธีจัดฟอร์แมตที่ง่ายที่สุดคือ การขึ้นบรรทัดใหม่
การขึ้นบรรทัดทัดใหม่ใน Excel ทำได้โดยกดปุ่ม Alt+Enter
จากสูตรเดิม ถ้าปรับฟอร์แมตโดยการขึ้นบรรทัดใหม่ จะกลายเป็นแบบนี้

น่าอ่านขึ้นเยอะเลยใช่ไหมครับ ^_^
จะดียิ่งกว่านี้ ถ้าการขึ้นบรรทัดใหม่นั้นให้ความสำคัญกับ ‘ศักดิ์ศรี’ ของฟังก์ชันด้วย
ศักดิ์ศรี?
เช่น จากสูตรเดิม IF ตัวแรกคือฟังก์ชันหลัก
IF ตัวที่สองคือกรณีที่เป็น FALSE ของ IF ตัวแรก
IF ตัวที่สามคือกรณีที่เป็น FALSE ของ IF ตัวที่สอง
IF ตัวที่สี่คือกรณีที่เป็น FALSE ของ IF ตัวที่สาม
ถ้าจัดฟอร์แมตโดยคำนึงถึง ‘ศักดิ์ศรี’ ก็สามารถกั้นซ้าย (เคาะ spacebar 4 ครั้ง) ได้ผลลัพธ์เป็นแบบนี้

และจะยิ่งอ่านง่ายขึ้น ถ้าจัดฟอร์แมตโดยคิดถึงโครงสร้างของฟังก์ชัน
โครงสร้าง?
เช่น โครงสร้างของฟังก์ชัน IF คือ
IF( logical test, value if true, [value if false] )
แปลว่า IF มี 3 องค์ประกอบ (argument)
ถ้าแยกองค์ประกอบทั้ง 3 โดยการขึ้นบรรทัดใหม่ จะกลายเป็นแบบนี้
IF(
logical test,
value if true,
[value if false]
)
หรือจากสูตรเดิม ถ้าแยกองค์ประกอบโดยขึ้นบรรทัดใหม่ จะกลายเป็น

ใช่ครับ นี่คือรูปแบบการเขียนโปรแกรมนั่นเอง
ในการเขียนโปรแกรมนั้น บ่อยครั้งที่โค้ดยาว ถ้าเขียนต่อกันเป็นพืด ต่อให้โค้ดง่ายก็ไม่มีใครอยากอ่าน เพราะมันลายตา
เทคนิคปรับโค้ดให้อ่านง่ายก็คือ ขึ้นบรรทัดใหม่ แล้วกั้นซ้ายตาม ‘ศักดิ์ศรี’ ของฟังก์ชันและองค์ประกอบนั้น ๆ
แต่… การจัดฟอร์แมตของสูตรนี้ ในแง่ของการเขียนโปรแกรม ยังไม่ถูกซะทีเดียว
ผิดตรงไหน?
ผิดตรงตำแหน่งของวงเล็บปิด
ตำแหน่งของวงเล็บปิด ควรปิดให้ตรงกับตำแหน่งของฟังก์ชันต้นทาง
เช่น เคสนี้มี IF ซ้อนกัน 4 ชั้น แปลว่าต้องปิดวงเล็บ 4 ครั้ง
ตำแหน่งของการปิดวงเล็บ ควรตรงกับ IF ชั้นนั้น ๆ
หรือควรเป็นแบบนี้

แม้ทำให้บรรทัดเยอะขึ้น แต่ดูแป๊ปเดียวก็เข้าใจ และตรวจสอบได้ง่ายว่าปิดวงเล็บครบหรือยัง
แต่ในทางปฏิบัติ คงไม่มีใครมานั่งเขียนสูตร Excel แบบนี้
อ้าว?
เพราะมันเสียเวลา
จุดที่เป็นปัญหาคือการกั้นซ้าย ต้องเกิดจากการเคาะ spacebar (ไม่สามารถใช้การกด Tab เหมือน Power BI หรือโปรแกรมอื่น) แปลว่าการกั้นซ้ายตรง IF ชั้นที่ 4 ต้องเคาะ spacebar ประมาณ 12 ครั้ง!
งั้นทำยังไดี?
บังเอิญผมเจอเว็บไซต์ http://excelformulabeautifier.com/

เว็บนี้ถูกออกแบบมาเพื่อปรับสูตร Excel ให้อ่านง่าย
วิธีใช้ก็ง่ายสุด ๆ
เริ่มจากก๊อปปี้สูตร Excel ไปใส่ไว้ตรงนี้

แล้วกด Enter จะได้สูตรที่ปรับฟอร์แมตทันที!

ว้าว! อ่านง่ายขึ้นเยอะ แถมมีเส้นกั้นบอก ‘ศักดิ์ศรี’ ของฟังก์ชันด้วย ^_^
สังเกตว่าฟังก์ชัน AND ถูกแยกเป็น 2 บรรทัด เพราะโครงสร้างของ AND คือ
AND( logical1, [logical2] )
ถ้าปรับให้ถูกหลักต้องเป็น
AND(
logical1,
[logical2]
)
แต่ในทางปฏิบัติก็พออะลุ้มอล่วยเขียนเป็นบรรทัดเดียวได้ ไม่งั้นจะมีบรรทัดมากเกินไป
ก๊อปปี้สูตรที่จัดฟอร์แมตจากเว็บนี้ไปใช้ได้ไหม?
ถ้าต้องการก๊อปปี้สูตรที่ปรับฟอร์แมต ลองคลิกปุ่ม Copy (ด้านขวามือ)

แล้วแปะใน Excel
จะพบว่าเจ๊ง!

อ้าว?
เพราะการใช้เครื่องหมาย double quotes (อัญประกาศคู่) ไม่ถูกต้อง


คิดว่าผู้พัฒนาเว็บอาจไม่ได้มองปัญหานี้ แต่ในอนาคตอาจแก้ไขก็เป็นได้
ในทางปฏิบัติ ผมไม่เคยก๊อปปี้สูตรที่ปรับฟอร์แมตจากเว็บนี้มาใช้เลย
มักใช้เว็บนี้เวลาเจอสูตรยาว ๆ จากที่อื่น (เช่น สูตรของคุณ Excel Wizard ^^) แล้วปรับฟอร์แมตเพื่อทำความเข้าใจมากกว่า
ก็สูตรยาว ๆ มันลายตานี่นา ^_^
อันที่จริง ผมยังมีเทคนิคปรับสูตรให้อ่านง่ายกว่าการปรับฟอร์แมตอีกนะครับ
เทคนิคนั้นคือ ปรับตรรกะ
ปรับตรรกะ?
เช่น จากสูตรเดิม ไม่จำเป็นต้องใช้ฟังก์ชัน AND ก็ได้ โดยอาจปรับตรรกะเป็น

เท่านี้ก็ง่ายขึ้นแล้ว ^_^
หรือถ้าสร้างตารางบอกการแบ่งกลุ่มหน้าตาแบบนี้ได้

ก็เปลี่ยนสูตรให้สั้นเหลือแค่
=VLOOKUP(A2,$E$2:$G$6,3,1)

ยิ่งง่ายขึ้นไปอีก ^_^
(ดูแนวคิดและตรรกะการเขียนสูตรนี้ได้จากบทความเรื่อง ไม่อยากใช้ IF ซ้อนกันเยอะๆ ทำไงดี? ep2)
ใครสนใจไฟล์ตัวอย่างของบทความนี้ ดาวน์โหลดได้ที่นี่ครับ
แล้วถ้าเป็นสูตร DAX ใน Power BI ล่ะ ปรับฟอร์แมตได้ไหม?
สูตร DAX ก็ปรับให้อ่านง่ายขึ้นได้เช่นกัน แถมมีเครื่องมือช่วยที่ดีกว่า Excel เสียอีก
แต่บทความนี้ยาว (มาก) แล้ว เดี๋ยวมาคุยเทคนิคการปรับสูตร DAX ในบทความถัดไปครับ
.
ถ้าชอบบทความนี้ แชร์ได้นะครับ ยิ่งมีคนอ่าน คนเขียนยิ่งมีกำลังใจครับ ^_^