เมื่อ 29 กย. 65 ที่ผ่านมานี้ มีข่าวดังในวงการ Excel ประเทศไทย นั่นคือคุณ Bo Rydobon (นามแฝง) หรือ ฉายา Excel Wizard ได้มีการแข่ง Excel Speed Run กับ Laurence Lau ผู้ที่ได้ Rank คะแนนรวมอันดับ 1 ในการแข่งขัน FMWC ปี 2022 ณ ตอนนี้ (ดูคะแนนล่าสุดได้ที่นี่)
ซึ่งการแข่ง Speed Run เป็นการแข่งที่เน้นความเร็ว โดยมันเป็นเคสที่ผู้แข่งรู้โจทย์อยู่แล้ว และสามารถเตรียมตัวก่อนมาแข่งได้ครับ ซึ่งยิ่งน่าสนใจเลยว่าแต่ละคนจะงัดเทคนิคอะไรมาใช้แก้โจทย์ให้ได้เร็วที่สุด (รู้โจทย์แต่ห้ามพิมพ์การแก้โจทย์ไว้ก่อนนะ ไม่งั้นมันวัดอะไรไม่ได้เลย 55)
ปรากฏว่าทั้งคู่แข่งขันอย่างดุเดือดมากๆ แต่ละคนใส่เทคนิคเจ๋งๆ กันไม่ยั้ง แต่สุดท้ายคุณ Bo ก็ชนะไปอย่างงดงาม 3 Stage รวด! ทั้งๆ ที่คุณ Laurence Lau นี่คือเก่งมากๆ นะ
ซึ่งคลิปการแข่งขันคืออันนี้ครับ ผมแนะนำให้ลองดูอย่างน้อยซักแป๊ปนึงจะได้เข้าใจอารมณ์การแข่งว่ามันสุดยอดขนาดไหน
ซึ่งหลายคนที่ดูคลิปการแข่งขันนี้ไปแล้วคงรู้สึกคล้ายๆ กัน ประมาณนี้คือ
- “มันน่าทึ่งมากๆ คนไทยสุดยอด!”
- “Excel ทำได้ขนาดนี้เลยเหรอ?”
- “ใช้ Excel โคตรไว ทำได้ไง!?”
- “ทำอะไรกันเนี่ย ดูไม่รู้เรื่องเลย! แต่ดูเจ๋งดีนะ 55”
ดังนั้นในบทความนี้ผมจึงขออาสามาแกะเคล็ดลับหรือเทคนิคเจ๋งๆ ที่คุณโบใช้ในการแข่ง เผื่อเป็นความรู้ให้พวกเราได้เอาไปปรับใช้ในการทำงานของตัวเองด้วยครับ (บทความนี้ขออนุญาตคุณโบแล้วครับ)
สารบัญ
แนวทางทั่วไปในการเพิ่มความเร็วการทำงาน
- วางแผนหน้าตา Layout ของ Model ให้ทำงานได้ง่าย
- ทำลาย Conditional Format ที่ไม่จำเป็นทิ้งซะ จะทำให้ทำงานเร็วขึ้น
- ใช้ Keyboard Shortcut (Hot Keys) แทนการใช้ Mouse
- แปลงสูตรที่ไม่ต้องการใช้อีกแล้วให้กลายเป็น Value
- ใช้ Defined Name เพื่อกำหนดพื้นที่การเลือกข้อมูลให้สะดวกขึ้น
- ใช้ Data Table เท่าที่จำเป็น ถ้าเลี่ยงใช้สูตรธรรมดาได้ก็ใช้สูตร
- ใช้ Excel365 เพื่อให้รองรับฟังก์ชันเยอะที่สุดรวมถึง Dynamic Array ที่เราสามารถเขียนสูตรช่องเดียวแล้วผลลัพธ์สามารถ Spill ล้นช่องนั้นออกมาได้เลย
ซึ่งเดี๋ยวเรามาดูรายละเอียดกันครับ ว่าคุณโบใช้หลักการข้างบนนี้แบบไหนบ้าง?
ลงรายละเอียดแต่ละเทคนิค
ถ้าหากเพื่อนๆ ได้ดูคลิปแค่ไม่กี่วินาทีแรกที่คุณโบเริ่มทำโจทย์ ก็จะพบว่ามีการใช้ Shortcut มากมายจนน่าทึ่ง! เช่น
Ctrl+A เลือกทั้งหมดในพื้นที่ -> Ctrl+C เพื่อ copy -> Ctrl+Pg Dn ไป Sheet ถัดไป -> Ctrl+ลูกศร เพื่อกระโดดไปทิศทางนั้นๆ จนสุด -> Ctrl+V เพื่อ Paste
ทำลาย Conditional Format ทั้งชีท โดยกด Alt, h, l, c, e -> เข้าไปตั้งชื่อ Defined Name โดยเลือก Range ที่ต้องการ แล้วกด Alt+F3 พิมพ์ชื่อแล้วกด Enter
แค่ดูก็เหนื่อยแล้วว ผมก็เลยขอเอาเทคนิคที่เกิดขึ้นมาจัดหมวดหมู่ให้เราเข้าใจได้ง่ายขึ้นดังนี้ครับ
วางแผนการเตรียมพื้นที่ตารางให้ทำงานง่ายขึ้น
- เนื่องจากการแข่งนี้ผู้แข่งรู้โจทย์ล่วงหน้าแล้ว ดังนั้นการหาวิธีการทำงานเพื่อให้ทำงานได้เร็วที่สุดจึงสำคัญมากๆ ซึ่งคุณโบวางแผนเรื่องนี้มาเป็นอย่างดี
- คุณโบมีการจัดเตรียมหน้าตาตารางหลายๆ อย่างให้ทำงานสะดวกขึ้น เช่น Copy ตาราง Assumption จากหน้าคำตอบมาหน้าแผนที่ด้วย
- มีการกำหนดทิศทางของรถที่วิ่งว่าเป็น ขึ้น ลง ซ้าย ขวา ด้วย U,D,L,R เพื่อให้สามารถเขียนสูตรเพื่อคำนวณระยะทางน้อยสุดในการที่รถในเคสจะวิ่งจากจุดนึงไปยังอีกจุดนึงตามกฎจราจรในเคสได้สะดวกขึ้น
- กฏจราจรคือ วิ่งชิดขวาเท่านั้น และการกลับรถจะกลับได้ที่จุดตัดถนนเท่านั้นเป็นต้น ซึ่งถ้าไม่ Model ให้ดีจะคำนวณระยะวิ่งผิดพลาดหมดเลย
- มีการสร้างแผนที่เพื่อคำนวณเรื่องต่างๆ แยกออกมาจากแผนที่หลัก เช่น
- แผนที่แสดง Address Cell Reference ที่แสดงพิกัดของแต่ละช่องของแผนที่หลัก
- แผนที่คำนวณระยะทางจากจุดที่กำหนดไปยังเป้าหมาย และเตรียม Reuse แผนที่นี้อีกครั้งในโจทย์ที่ต้องคำนวณระยะเวลาการเดินทางได้อย่างชาญฉลาด
- สำหรับ Stage ที่ห้ามใช้ Mouse คุณโบได้ไล่ทำการตั้งชื่อ Range ที่สำคัญไว้ทั้งหมด แล้วเขียนสูตรโดยอ้างถึงชื่อเหล่านั้น ทำให้ไม่ต้องย้ายตำแหน่งไปมาเลย
เทคนิคในการเลือกข้อมูล
- ใช้ปุ่ม Enter กับ Tab อย่างเหมาะสม เช่น ถ้าจะให้ใส่ข้อมูลแล้วลงล่างก็ Enter ถ้าจะใส่แล้วไปขวาก็กด Tab เอา
- Ctrl+A ช่วยเลือกทั้งหมดในพื้นที่ที่ต่อเนื่องกัน
- ใช้ปุ่มลูกศรบน Keyboard เพื่อเลือกข้อมูลที่ไม่ไกลมาก
- Ctrl+ลูกศร เพื่อกระโดดไปทิศทางนั้นๆ จนสุด
- Ctrl+Shift+ลูกศร เพื่อเลือกพื้นที่แบบกระโดดไปทิศทางนั้นๆ
- Ctrl+PgDn ไป Sheet ถัดไป
- เข้าไปตั้งชื่อ Defined Name โดยเลือก Range ที่ต้องการ -> แล้วกด Alt+F3 พิมพ์ชื่อ -> กด Enter
- กด F5 เพื่อ Go to Name ที่ตั้งไว้
- ถ้าเป็นพื้นที่แปลกๆ เช่น พื้นที่ถนน คุณโบใช้วิธีการเลือกด้วยการ Find All แบบหา Cell สีเทา -> แล้ว Ctrl+A ในเมนู Find
- หรืออาจใช้การเลือกพื้นที่เฉพาะที่มีสูตร โดยใช้ Go to Special -> Formula
เทคนิคการ Copy Paste
- Ctrl+C เพื่อ copy -> Ctrl+V เพื่อ Paste อันนี้ Basic ๆ แต่ที่เจ๋งกว่าคืออันถัดไป
- เลือกข้อมูล => กด Ctrl+D เพื่อ Fill Down ลงมาข้างล่าง (D=Down) (ซึ่งเร็วกว่ากด Copy -> Paste)
- ไม่งั้นการเลือก Range จะยากขึ้นอีกหน่อยเพราะบางทีต้องกด Ctrl + . เพื่อเปลี่ยนจุดยึดของ Range อีกทีกลายเป็น Ctrl + . Shift → Ctrl+D
- ป.ล. สามารถกด Ctrl+R เพื่อ Fill Right ไปด้านขวา (R=Right)
- หลังจากเลือกพื้นที่ที่ต้องการ -> F2 เพื่อ Edit สูตร -> Ctrl+Enter เพื่อใส่สูตรทั้งพื้นที่พร้อมกันได้เลย แบบไม่ต้อง Copy Paste หรือ Fill ก็ได้
เทคนิคการเขียนสูตร
- ใช้สูตร Dynamic Array ช่วยให้การทำงานสะดวกรวดเร็วขึ้นมาก เช่น ใช้ Array 2 แกนเชื่อมกันแบบไขว้เพื่อสร้างตาราง Address
- ใช้การพิมพ์ชื่อฟังก์ชันบางส่วนแล้วกด Tab เพื่อให้ Auto Complete แล้วเปิดวงเล็บให้อัตโนมัติ แทนที่จะนั่งพิมพ์เองทุกตัว ( เหมือนว่า Laurence Lau จะถนัดพิมพ์เอง)
- มีการใช้ฟังก์ชันที่เหมาะสมกับการแก้ปัญหา เช่น แทนที่จะใช้ IF ซ้อนกันหลายอัน คุณโบก็เลือกจะใช้ฟังก์ชัน SWITCH ที่เขียนง่ายและเข้าใจง่ายกว่าด้วย
เช่น แทนที่จะเขียน IF ซ้อนกันว่า
=IF(ทิศทางถนนแนวตั้ง="U",ระยะทางช่องบน,
IF(ทิศทางถนนแนวตั้ง="D",ระยะทางช่องบน,999))
คุณโบใช้ SWITCH แทนแบบนี้ได้ ซึ่งดูคลีนกว่า
=SWITCH(ทิศทางถนนแนวตั้ง,"U",ระยะทางช่องบน,"D",ระยะทางช่องล่าง,999)
พอใช้สูตรประกอบกันทั้ง IF + MIN + SWITCH + SUMIFS ได้อย่างลงตัวด้วย Logic ที่เยี่ยมยอด ก็สามารถคำนวณระยะเวลาจากจุดเริ่มต้นที่กำหนดไปยังตำแหน่งต่างๆ ได้อย่างสวยงาม (ต้องวิ่งตามกฎจราจรด้วยนะ!!)
ซึ่งมีการใช้สูตรประมาณนี้
=
IF(จุดStart=ตำแหน่งถนนนั้นๆ,1,
MIN(
SWITCH(ทิศทางถนนแนวตั้ง,"U",ระยะทางช่องบน,"D",ระยะทางช่องล่าง,999),
SWITCH(ทิศทางถนนแนวนอน,"R",ระยะทางช่องขวา,"L",ระยะทางช่องซ้าย,999)
)
+1)
- ซึ่งจะเห็นว่าสูตรนี้มีการอ้างอิงค่าจากช่องบนล่างซ้ายขวาของตัวเองด้วย ยกเว้นจุดเดียวคือจุดที่ตรงกับตำแหน่ง Start ซึ่งจะได้ค่า 1 เป็นค่าเริ่มต้น
- แปลว่า Excel จะไล่คำนวณจากจุด Start ก่อนแล้วคิด Cell ถัดจากจุด Start ไปเรื่อยๆ จนเต็มถนนได้ในที่สุด ซึ่งผมคิดว่า Logic นี้เจ๋งมากๆ (มีความเข้าใจในลำดับ Sequence ของสูตร Excel อย่างดี ว่ามันจะไล่หาช่องที่ควรคำนวณก่อนให้เอง)
ซึ่งถ้าลองดูค่าตัวเลข พวกนี้คือระยะทางที่ต้องวิ่งตามกฎจราจรในเกมเลยครับ (ช่องเหลืองที่ผมระบายไว้คือจุดเริ่มต้น)
ส่วนที่ผมมองว่าเป็นเรื่องที่ช่วยให้เร็วมากๆ อีกอันนึงคือ คุณโบมีการ Reuse พื้นที่สูตรเดิมที่ทำไว้ใน Level ก่อนหน้า โดยปรับปรุงสูตรเพิ่มเติมแค่เรื่อง +SUMIFS() ตอนจบเพื่อให้เคสเดิมที่เคยคำนวณไว้แค่ระยะทาง สามารถรองรับเคสที่ต้องคำนวณระยะเวลาซึ่งต้องคำนึงถึงกรณีที่มีรถติดบนถนนได้ด้วยอีกต่างหาก
คุณโบใช้การเลือกพื้นที่แบบ Go to Special -> Formula แล้วกด F2 เพื่อแก้สูตรเพิ่มเติมแล้วกด Ctrl+Enter เพื่อใส่สูตรทีเดียวทุกช่องได้แบบไม่เสียเวลาเลย
=
IF(จุดStart=ตำแหน่งถนนนั้นๆ,1,
MIN(
SWITCH(ทิศทางถนนแนวตั้ง,"U",เวลาช่องบน,"D",เวลาช่องล่าง,999),
SWITCH(ทิศทางถนนแนวนอน,"R",เวลาช่องขวา,"L",เวลาช่องซ้าย,999)
)
+1)
+SUMIFS(ระยะเวลารอรถแต่ละแบบ,รถแต่ละแบบ,ถนนนั้นๆ)
ผลลัพธ์ก็จะได้ประมาณนี้ ซึ่งจะต่างจากเดิมนิดหน่อย เพราะมีการบวกเวลารถติดเข้าไปด้วยในส่วนของ SUMIFS
ทั้งนี้คุณโบไม่ต้องใช้สูตรเดิมแล้วเพราะได้ Copy paste value คำตอบไว้แล้วนั่นเอง
ซึ่งทั้งหมดนี้จะไม่ Work เลย ถ้าปราศจากการวางแผนการวาง Map และการใส่ U D L R ที่ขอบแผนที่ตั้งแต่แรก!
เรื่องของ Data Table
ทั้งๆ ที่ Data Table เป็นเครื่องมือที่ทรงพลัง และคนที่ทำ Model คำนวณใน Excel ก็ชอบใช้มันมาก ตอนไล่คำนวณคำตอบ คุณโบกลับใช้ Data Table เท่าที่จำเป็น…
แต่เราจะเห็นได้ว่าใน Level 3-4 จะพบว่าคุณโบมีการใช้ MINIFS ในการหาคำตอบของ Level นั้นๆ ไปเลย โดยไม่ต้องใช้ Data Table นั่นแปลว่า คุณโบได้คิดไว้แล้วว่า ถ้าเลี่ยง Data Table ได้ก็จะเลี่ยง เช่น
=MINIFS(ระยะทางหรือเวลาใน ds,ตำแหน่งใน ad,ตำแหน่งปลายทางที่ต้องการ)
คุณโบจะใช้ Data Table ในเคสที่เขียนสูตรปกติได้ยาก เช่น มีการวางแผนที่โดยสูตรในแผนที่อ้างอิงตำแหน่งเริ่มต้นและเป้าหมายเอาไว้ แล้วโจทย์ต้องการให้เปลี่ยนแปลงจุดเริ่มต้นไปเรื่อยๆ แบบนี้จะเขียนสูตรธรรมดาแทบไม่ได้เลย เพราะจะต้องทดแผนที่เยอะมาก เช่น Level 2, 5, 6 เป็นต้น
เช่น Level 6 ที่ยากที่สุดสูตรใน Data Table จะเป็นประมาณนี้
=MINIFS(เวลาใน ds,ตำแหน่งใน ad,XLOOKUP(ตำแหน่งเริ่มต้นที่เป็น column input cell, list ตำแหน่งเริ่มต้น ที่เป็น input data table ,list ตำแหน่งปลายทาง))
เหตุผลที่คุณโบเลี่ยง Data Table คือ Data Table มันจะมีการโยนค่าจาก Column Input / Row Input ลงไปใน Column Input Cell/ Row Input Cell ที่เราเลือก (ในที่นี้มีแค่ Column Input Cell)
ซึ่งพอมีการโยนค่าใหม่เข้าไป ทำให้เกิดการกระตุ้นให้สูตรทำงานอีกรอบหนึ่ง แม้บางที่มันอาจจะไม่จำเป็นต้องคำนวณซ้ำ
ดังนั้นเปรียบเสมือนว่า Data Table ถูกบังคับให้ทำการคำนวณ Output ออกมาใหม่ โดยจำนวนครั้งในการคำนวณจะเท่ากับจำนวนการกำหนดค่า Column Input x Row Input ของ Data Table นั้นๆ เลย ซึ่งต่างจากการเขียนสูตรที่อ้างอิงค่าจากตารางที่คำนวณไว้แล้วแบบไม่ต้องคำนวณซ้ำโดยไม่จำเป็น
ดังนั้นในเคสนี้ ทุกครั้งที่ Data Table คำนวณใหม่ จะต้องคำนวณพื้นที่แผนที่อย่างน้อย =71*66 = 4,686 ครั้งต่อ 1 แถวของ Data Table 20 ข้อ ก็ 93,720 ครั้ง อีกข้อนึงคือ Data Table มีความ Volatile หนักมาก คำนวนใหม่ทุกครั้งที่มีการเปลี่ยนค่าในเซลใดๆก็ตาม
ดังนั้นใน Calculation options ของ Formula จึงมีให้เลือกด้วยว่า Automatic Except for Data Table เพื่อไม่ให้ Data Table คำนวณใหม่ทุกครั้งที่ แก้ค่าในเซลด้วย
แต่ไม่ว่าจะคำนวณแบบไหน พอคำนวณเสร็จคุณโบก็ Copy Paste Value เก็บไว้เลยเพื่อเพิ่มความเร็วในการคำนวณข้อต่อไป ไม่ให้ถูกข้อเดิมถ่วงไว้
เทคนิคการเลือก Ribbon หรือ Menu ต่างๆ
- ทำลาย Conditional Format ทั้งชีทโดยกด Alt, h, l, c, e
- เรียกใช้ Data Table ด้วย Alt, a, w, t
- กด Paste Special ด้วย Ctrl+Alt+V –> กด t เพื่อเลือก Paste Format
- ตีกรอบด้วย Hotkey เช่น Alt, h, b, a (ตีกรอบทั้งหมด)
- เปลี่ยน Number Format ตัวเลข ด้วย Ctrl+Shift+เลขต่างๆ เช่น
- Ctrl+Shift+5 (Ctrl+%) เพื่อทำเป็น %
- Ctrl+Shift+4 (Ctrl+$) เพื่อทำเป็น Currency
- Ctrl+Shift+3 (Ctrl+#) เพื่อทำเป็นวันที่
อะไรเร็วได้ก็เร็ว
- คุณ Bo ตั้งชื่อสั้นๆ เป็นตัวย่อของพื้นที่นั้น แบบพอใช้งานได้แค่นั้นเอง เช่น mp=map, ad=address เป็นต้น ซึ่งแม้จะดูเหมือนเป็นเรื่องเล็กๆ น้อยๆ แต่การลดตัวอักษรไป 1 ตัวก็เพิ่มความเร็วได้เช่นกันจริงมะ?
- ตอนที่ไล่ตอบคำถามแต่ละข้อ คุณโบก็ทำการเลือกข้อมูลแล้ว Fill Down ผลลัพธ์ของเค้า แบบ Fill Down ติดเลข Score ของโจทย์ (ที่ไม่ใช่สูตร) มาด้วย
- ซึ่งตรงนี้เค้าสังเกตแล้วว่าแต่ละข้อคะแนนเท่ากัน จึง Ctrl+D แบบติด score มาได้แบบไม่ทำให้ผลลัพธ์ผิด
- ซึ่งจริงๆ ก็ดูเสี่ยงนิดหน่อยแต่ก็เป็นการเอาตัวรอดที่ชาญฉลาดมาก ไม่งั้นการเลือก Range จะยากขึ้นอีกหน่อยเพราะต้องกดเปลี่ยนจุดยึดของ Range อีกที
สติและสมาธิก็สำคัญ
มีอยู่ช่วงนึง (ประมาณนาทีที่ 36:30 ได้) คุณโบมีเขียนสูตรผิดไปนิดนึงทำให้คำตอบออกมาเป็น 0 แบบงงๆ เพราะน่าจะมีการระบุ Range แล้วดันพิมพ์สูตรติดตัว J มาแบบไม่ตั้งใจ (ทำให้มีช่วงที่หน้าคุณโบอึ้งกับคำตอบอยู่ซักพักนึง)
แต่สุดท้ายคุณโบก็สามารถตั้งสติแก้สูตรให้ถูกต้องได้ ซึ่งถือว่าดึงสติกลับมาได้เร็วมากๆ ทั้งๆ ที่เค้าน่าจะกำลังตื่นเต้นกับการแข่งขันมากๆ แท้ๆ
นี่ถ้าคุณโบเขียนไม่พลาดเลย น่าจะเร็วกว่านี้เป็นนาทีเลย สุดยอด!
คุณโบฝากบอกผู้อ่าน
คุณโบมีสิ่งที่อยากฝากบอกทุกคนที่อยากใช้ Excel ให้เก่งขึ้นว่านอกจากเทคนิคต่างๆ ข้างบนแล้ว สิ่งสำคัญที่สุดจริงๆ ก็คือเรื่องสุดท้ายนี้ครับ
ให้ฝึกฝนบ่อยๆ ทำโจทย์แปลกๆใหม่ๆ เพิ่มความยากของโจทย์ไปเรื่อยๆ
Bo Rybobon (Excel Wizard)
นี่ล่ะครับ หนทางของผู้ที่เก่งกาจได้อย่างแท้จริง ก็ยังต้องใช้ความฉลาดควบคู่กับการฝึกฝนอย่างสม่ำเสมอด้วยนั่นเอง
และถ้าใครอยากรู้ Shortcut Excel มากกว่านี้ ก็สามารถศึกษาได้จากบทความของผมได้ครับ (ฝากความรู้ให้นิดนึง อิอิ) https://www.thepexcel.com/remember-excel-keyboard-shortcut/