ในสมัยก่อน เวลาเราจะสร้างฟังก์ชันขึ้นมาใช้เองใน Excel เราจะต้องเขียนโปรแกรม VBA เอาเท่านั้น แต่ในตอนนี้ Excel 365 ได้มีฟังก์ชันใหม่ชื่อว่า LAMBDA ซึ่งสามารถสร้างฟังก์ชันเองได้มาให้ใช้แล้วครับ (เพิ่งมีให้ใช้สำหรับคนทั่วไป เมื่อ กพ. 2022 นี้เอง)
บอกเลยว่าใครอ่าน + ดูคลิปทั้งหมดในบทความนี้ รับรองว่าจะได้มุมมองสดใหม่ในการเขียนสูตรของ Excel 365 แน่นอนครับ
พื้นฐานการใช้ LAMBDA
เราจะมาเรียนรู้การใช้งานพื้นฐานของ LAMBDA กันก่อน ซึ่งเป็นความรู้ที่จำเป็นในการต่อยอดไปสู่เรื่อง LAMBDA Helper Function เช่น BYROW, BYCOL, MAP และอีกมากมายครับ ซึ่งสูตรพวกนี้จะเปลี่ยนแนวคิดของการเขียนสูตร Excel ไปเยอะเลยล่ะรับรอง
=LAMBDA([parameter1, parameter2, …,] calculation)
เช่น สมมติถ้าจะคำนวณค่า BMI (ฺBody Mass Index) เพื่อเช็คว่าเราอ้วนหรือไม่? ปกติจะมีสูตรว่า BMI = kg/m2
เราก็สามารถเขียนฟังก์ชันขึ้นมาได้แบบนี้
=LAMBDA(Weight,Height,Weight/Height^2)
โดย Weight คือ parameter1, Height คือ parameter2 (หน่วยเป็นเมตร)
และ Weight/Height^2 คือ calculation หรือผลลัพธ์ที่ต้องการ
แต่วิธีการใช้ฟังก์ชัน LAMBDA นั้นค่อนข้างแปลกนิดนึง คือ ถ้าเราดันเรียกใช้สูตรนั้นตรงๆ มันจะ error ว่า #CALC!

วิธีเขียนสูตรไม่ให้พังนั้นมี 2 แบบ
1. เขียนฟังก์ชัน LAMBDA เสร็จแล้วเรียกใช้ฟังก์ชันเลยในสูตร
โดยใส่ input ที่จะใส่ลงไปใน parameter ลงไปในวงเล็บต่อท้าย เช่น ถ้าผมหนัก 65 kg และสูง 1.7 m ก็ใส่แบบนี้
=LAMBDA(Weight,Height,Weight/Height^2)(65,1.7)

2. เขียนฟังก์ชัน LAMBDA ใน Name Manager แล้วเรียกใช้อีกที
ก่อนอื่นให้เราสร้าง Defined Name ขึ้นมาใหม่แล้วตั้งชื่อฟังก์ชันตามต้องการ เช่น BMI แล้วใส่สูตร LAMBDA เข้าไปใน Refers to:

จากนั้น พอเราออกมาในส่วนของ sheet ตามปกติ เราจะสามารถเรียกใช้ฟังก์ชัน BMI ที่ตั้งชื่อเอาไว้ได้เลย แถมเห็นชัดๆ ด้วยว่าต้องระบุอะไรบ้าง ก่อนหลัง


สำหรับรายละเอียดอื่นๆ ลองศึกษาจากคลิปนี้ได้ครับ รับรองว่าเด็ด
วิธีการแชร์ Function ที่สร้างเองให้เพื่อน
มาดูวิธีแชร์ฟังก์ชันที่สร้างเองให้เพื่อน ด้วย Advanced Formula Environment Add-in + GitHub Gist กันแบบละเอียดยิบครับ ซึ่งจะช่วยให้เพื่อนๆ สามารถสร้างฟังก์ชัน หรือโหลดสูตรมาจาก Github แล้ว Sync เข้า Name Manager ได้เลยด้วย เจ๋งมากๆ แถมยังสามารถ Comment Code ได้คล้ายๆ DAX เลย
อันนี้ตัวอย่าง GitHub GIST ของ Microsoft ครับ : https://gist.github.com/chgrossMSFT/d172fd552cf6893bcdc7942223cb0e55
AFE 1.1 เป็นต้นไป

Advanced Formula Environment (AFE) ซึ่งเป็น Add-in Excel 365 เวอร์ชันใหม่ล่าสุด 1.1 สามารถยอมให้เราเขียนสูตรขึ้นมาใช้เองใน Excel โดยไม่ต้องเขียน LAMBDA ครอบอีกต่อไป เพราะมันจะเขียนให้เราใน Name Manager เอง!!
เช่น ใน AFE ผมสร้างฟังก์ชันชื่อ SORTUNIQUE ซึ่งสูตรคือ
=SORT(UNIQUE(range))
พอมันไปสร้างสูตรใน Name Manager มันใส่ให้เป็น
=LAMBDA(range,SORT(UNIQUE(range)))
เองโดยอัตโนมัติ!! ทำให้การเขียนสูตรเองง่ายขึ้นไปอีกครับ เจ๋งสุดๆ เลย
LAMBDA Helper Function
แนะนำการใช้ LAMBDA Helper Function ทั้ง 7 ตัว คือ
- BYROW ส่ง Array เข้า input ทีละแถว
- BYCOL ส่ง Array เข้า input ทีละคอลัมน์
- MAP ส่ง Array เข้า input ทีละช่อง
- SCAN สร้าง Array ที่เป็นการคำนวณสะสม แสดงผลสะสมระหว่างทางด้วย
- REDUCE สร้าง Array ที่เป็นการคำนวณสะสม แสดงผลสะสมสุดท้าย
- MAKEARRAY สร้าง Array ขนาดที่ต้องการ
- ISOMITTED เช็คว่ามีการไม่ได้ใส่ input ของ LAMBDA มาหรือไม่? เอาไว้ทำ optional parameter ได้
สรุป
LAMBDA + Helper Function ทั้งหลาย จะช่วยให้เราสามารถเขียนสูตรที่ซับซ้อน แล้วส่งให้เพื่อนที่ไม่ค่อยเก่ง Excel เท่าไหร่เอาไปใช้งานได้อย่างง่ายๆ ซึ่งจะเปิดโอกาสให้เกิดผลลัพธ์ที่น่าอัศจรรย์ขึ้นในองค์กรของคุณแน่นอนครับ