LET ช่วยให้คุณกำหนดชื่อตัวแปร (Named Variables) ภายในสูตร Excel เพื่อเก็บค่าหรือผลลัพธ์การคำนวณ จากนั้นนำชื่อเหล่านั้นมาใช้ซ้ำในสูตรเดียวกัน
.
ทำให้สูตรที่ซับซ้อนอ่านง่ายขึ้นเยอะ ลดข้อผิดพลาดจากการเขียนซ้ำ และเพิ่มความเร็วเพราะแต่ละการคำนวณจะทำงานเพียงครั้งเดียว ไม่ว่าจะถูกอ้างอิงกี่ครั้งก็ตาม
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| name1 | Text | ชื่อตัวแปรแรก ต้องขึ้นต้นด้วยตัวอักษร ไม่สามารถใช้ชื่อที่ขัดแย้งกับชื่อเซลล์ (A1, B2) หรือชื่อฟังก์ชัน (SUM, IF) ไม่มีช่องว่าง (ใช้ underscore แทน เช่น tax_rate) | |
| value1 | Any | ค่าหรือสูตรที่ต้องการกำหนดให้กับ name1 สามารถเป็นตัวเลข ข้อความ ช่วงข้อมูล หรือผลลัพธ์จากฟังก์ชันอื่นๆ ได้ | |
| [name2]ไม่บังคับ | Text | – | ชื่อตัวแปรที่สอง (ถ้ามี) ปฏิบัติตามกฎเดียวกับ name1 |
| [value2]ไม่บังคับ | Any | – | ค่าที่กำหนดให้กับ name2 สามารถอ้างอิงตัวแปรที่ประกาศก่อนหน้า (name1) ได้ สามารถเพิ่มคู่ name/value ได้สูงสุด 126 คู่ |
| calculation | Any | สูตรสุดท้ายที่ใช้ตัวแปรที่ประกาศไว้มาคำนวณผลลัพธ์ ต้องเป็น argument สุดท้ายเสมอ และเป็นค่าที่ LET จะส่งกลับ |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
เคยเจอสูตรที่ต้องใช้ VLOOKUP ซ้ำๆ หลายครั้งในสูตรเดียวกันมั้ยครับ? แล้วมันก็ช้าจนแทบหมดความอดทน 😭
.
LET เกิดมาเพื่อแก้ปัญหานี้แหละครับ ✨
.
ฟังก์ชัน LET ช่วยให้เราตั้งชื่อ (Name) ให้กับผลลัพธ์การคำนวณภายในสูตร เหมือนการประกาศตัวแปรในการเขียนโปรแกรม ทำให้สูตรที่ซับซ้อนอ่านง่ายขึ้นเยอะ และลดข้อผิดพลาดจากการเขียนสูตรซ้ำ 💡
.
ที่เจ๋งสุดคือ… Excel จะคำนวณค่าของแต่ละตัวแปรเพียงครั้งเดียว แทนที่จะคำนวณซ้ำทุกครั้งที่ถูกอ้างอิง ทำให้สูตรเร็วขึ้นอย่างเห็นได้ชัดครับ 🚀
.
LET มีประโยชน์อย่างมากเมื่อต้องใช้ผลลัพธ์จากสูตรเดียวกันหลายครั้งในสูตรที่ยาว เช่น การใช้ VLOOKUP หรือ FILTER หลายครั้ง การคำนวณค่าเฉลี่ยแล้วนำไปเปรียบเทียบ หรือการสร้างสูตรที่มีหลายขั้นตอนที่ต้องอ้างอิงผลลัพธ์จากขั้นตอนก่อนหน้า
.
ส่วนตัวผมคิดว่า LET เปลี่ยนวิธีเขียนสูตรไปเลย ทำให้เขียนสูตรแบบมีโครงสร้าง อ่านง่าย และ debug ง่ายกว่าเดิมเยอะครับ 😎
ใช้ LET แยกสูตรที่มีหลายขั้นตอนออกเป็นตัวแปรย่อยๆ ที่มีชื่อสื่อความหมาย ทำให้ผู้อื่น (หรือตัวคุณเองในอนาคต) เข้าใจตรรกะได้ง่าย และสามารถ debug ได้เร็วเพราะแต่ละขั้นตอนมีชื่อเรียกที่ชัดเจน แทนที่จะเป็นสูตรยาวเป็นบรรทัดเดียว
เมื่อสูตรต้องใช้ผลลัพธ์จากการคำนวณเดียวกันหลายครั้ง (เช่น VLOOKUP, FILTER, AVERAGE ในสูตรเดียวกัน) การใช้ LET เก็บผลลัพธ์ไว้ใช้ซ้ำจะลดเวลาประมวลผลลงอย่างมาก โดยเฉพาะกับข้อมูลขนาดใหญ่หรือฟังก์ชันที่ซับซ้อน
ใช้ LET เก็บผลลัพธ์จากฟังก์ชันที่อาจเกิดข้อผิดพลาด (เช่น VLOOKUP, INDEX/MATCH) แล้วตรวจสอบด้วย ISNA, ISERROR หรือ IFERROR โดยไม่ต้องเรียกฟังก์ชันหลักซ้ำ ทำให้สูตรเร็วขึ้นและจัดการข้อผิดพลาดได้ครบถ้วน
LET ใช้งานคู่กับฟังก์ชัน FILTER, SORT, UNIQUE, SEQUENCE ได้อย่างมีประสิทธิภาพ ช่วยจัดการ array ขนาดใหญ่โดยคำนวณเพียงครั้งเดียว จากนั้นนำผลลัพธ์ไปใช้ในหลายวิธี เช่น นับจำนวนด้วย ROWS, สรุปยอดด้วย SUM, หรือแสดงผลโดยตรง
ตัวอย่างพื้นฐานที่แสดงโครงสร้างของ LET: กำหนด price = 100 และ quantity = 3 จากนั้นคำนวณผลคูณในส่วน calculation สุดท้าย
หากไม่ใช้ LET คุณต้องเขียน =100*3 ซึ่งไม่สื่อความหมายเท่าการใช้ชื่อตัวแปรที่อ่านเข้าใจง่าย ตัวแปรที่ประกาศใน LET จะใช้ได้เฉพาะภายในสูตรนี้เท่านั้น (Local Scope)
สมมติมีคะแนนสอบในเซลล์ A2:A100 โดยปกติถ้าต้องการเปรียบเทียบว่าคะแนนใน B2 สูงกว่าค่าเฉลี่ยหรือไม่ คุณอาจเขียน =IF(B2>AVERAGE(A2:A100), "สูงกว่าค่าเฉลี่ย", IF(B2<AVERAGE(A2:A100), "ต่ำกว่าค่าเฉลี่ย", "เท่ากับค่าเฉลี่ย")) ซึ่งทำให้ AVERAGE ถูกคำนวณ 2 ครั้ง
การใช้ LET เก็บค่าไว้ใน avg ทำให้คำนวณเพียงครั้งเดียว ประหยัดเวลาและทรัพยากร โดยเฉพาะเมื่อข้อมูลมีจำนวนมาก 😎
สมมติมีตารางข้อมูลพนักงาน (A2:C100) โดยคอลัมน์แรกเป็นรหัส คอลัมน์ที่ 3 เป็นชื่อ และคุณต้องการค้นหาชื่อจากรหัสใน E2
หากไม่ใช้ LET คุณต้องเขียน VLOOKUP 2 ครั้ง: =IF(ISNA(VLOOKUP(E2,A2:C100,3,FALSE)), "ไม่พบข้อมูล", VLOOKUP(E2,A2:C100,3,FALSE)) ซึ่งทำให้ Excel ต้องค้นหาในตาราง 2 ครั้ง
LET ช่วยเก็บผลลัพธ์ไว้ใน lookup_result แล้วตรวจสอบเพียงครั้งเดียว ลดเวลาประมวลผลลงครึ่งหนึ่ง 💡
สมมติ A2=100 (ราคาสินค้า), B2=5 (จำนวน) ตัวอย่างนี้แสดงจุดแข็งของ LET ในการคำนวณแบบหลายขั้นตอนที่แต่ละขั้นอ้างอิงผลลัพธ์จากขั้นก่อนหน้า: subtotal=500, vat=35, shipping=50, total=585
หาก subtotal ต้องถูกใช้หลายครั้งในสูตร การเก็บไว้ในตัวแปรทำให้ไม่ต้องคำนวณซ้ำ และที่สำคัญคือ สูตรอ่านเข้าใจง่ายเหมือนอ่านขั้นตอนการคำนวณทีละขั้น ทำให้ debug ง่ายและผู้อื่นเข้าใจได้เร็ว 📝
สมมติมีข้อมูลยอดขาย (A2:C100) โดยคอลัมน์ C เป็นยอดเงิน คุณต้องการนับว่ามีกี่รายการที่ยอดขายเกิน 1000
หากไม่ใช้ LET คุณต้องเขียน FILTER 2 ครั้ง หรือใช้ SUMPRODUCT แทน การใช้ LET เก็บผลการกรองไว้ใน filtered_data ทำให้สามารถนำไปใช้งานต่อได้หลายแบบ เช่น ROWS(filtered_data) นับจำนวนแถว, SUM(INDEX(filtered_data,,3)) รวมยอดขาย, หรือแสดงตารางที่กรองแล้วโดยตรง โดยที่ FILTER ทำงานเพียงครั้งเดียว 🔍
ตัวอย่างขั้นสูงที่แสดงการใช้ LET กับฟังก์ชัน Array แบบไดนามิก: สร้างลำดับวันที่ตั้งแต่ 1-31 ม.ค. 2025 ด้วย SEQUENCE จากนั้นกรองเอาเฉพาะวันทำงาน (จันทร์-ศุกร์) ด้วย FILTER และ WEEKDAY
หากไม่ใช้ LET สูตรจะยาวและซับซ้อนมาก เพราะต้องคำนวณ all_dates ภายใน FILTER ทำให้อ่านยาก การแบ่งเป็นตัวแปร start_date, end_date, all_dates ทำให้เห็นขั้นตอนชัดเจน และ SEQUENCE ถูกคำนวณเพียงครั้งเดียวก่อนนำไปกรอง เพิ่มประสิทธิภาพอย่างมาก ✨
ตัวอย่างระดับผู้เชี่ยวชาญที่แสดงการคำนวณส่วนเบี่ยงเบนมาตรฐาน (Standard Deviation) ด้วย LET ร่วมกับ LAMBDA และ MAP: คำนวณค่าเฉลี่ย → ใช้ MAP และ LAMBDA คำนวณผลต่างกำลังสองของแต่ละค่า → คำนวณ Variance → หารากที่สองได้ส่วนเบี่ยงเบนมาตรฐาน
การใช้ LET ทำให้สูตรที่ซับซ้อนระดับนี้อ่านเข้าใจง่าย แก้ไขได้ง่าย และที่สำคัญคือ average_sales ถูกคำนวณเพียงครั้งเดียวแม้จะถูกใช้ใน LAMBDA ที่ทำงานซ้ำ 99 ครั้ง (สำหรับแต่ละแถว) 😎
ไม่ได้นะครับ ชื่อตัวแปรต้องปฏิบัติตามกฎ Name Manager ของ Excel: (1) ต้องขึ้นต้นด้วยตัวอักษร ไม่สามารถขึ้นต้นด้วยตัวเลขหรือเครื่องหมายได้ (2) ห้ามมีช่องว่าง ใช้ underscore แทน เช่น tax_rate (3) ห้ามซ้ำกับชื่อเซลล์ เช่น A1, B2, XFD1 (4) ห้ามซ้ำกับชื่อฟังก์ชัน เช่น SUM, DATE, IF (5) ตัวพิมพ์ใหญ่-เล็กไม่สำคัญ (price = PRICE = Price)
LET เป็นฟังก์ชันใหม่ที่ใช้ได้เฉพาะ Excel 365 (Subscription), Excel 2021, Excel 2024, Excel for Web และ Excel for Mac (365/2021/2024) เท่านั้น
ไม่สามารถใช้กับ Excel 2019, Excel 2016 หรือเวอร์ชันก่อนหน้าได้ หากเปิดไฟล์ที่มี LET ใน Excel รุ่นเก่าจะแสดง #NAME? error ⚠️
สามารถประกาศได้สูงสุด 126 คู่ชื่อ-ค่า (name/value pairs) ในสูตร LET เดียว แต่ในทางปฏิบัติไม่ควรใช้เยอะเกินไป เพราะจะทำให้สูตรอ่านยาก
ส่วนตัวผมแนะนำให้ใช้ 3-7 ตัวแปรต่อสูตร หากต้องการมากกว่านั้นควรแบ่งเป็นหลายเซลล์หรือใช้ LAMBDA สร้างฟังก์ชันย่อยแทนครับ 💡
จริงครับ และวัดผลได้ชัดเจน 😎
เพราะ Excel จะคำนวณค่าของแต่ละตัวแปรเพียงครั้งเดียว จากนั้นนำผลลัพธ์ที่เก็บไว้มาใช้ซ้ำ ไม่ว่าจะถูกอ้างอิงกี่ครั้ง
ตัวอย่าง: สูตร =IF(VLOOKUP(A1,Table,2,0)>100, VLOOKUP(A1,Table,2,0)*1.1, VLOOKUP(A1,Table,2,0)*0.9) จะทำ VLOOKUP 3 ครั้ง แต่ถ้าใช้ LET: =LET(val, VLOOKUP(A1,Table,2,0), IF(val>100, val*1.1, val*0.9)) จะทำเพียงครั้งเดียว เร็วขึ้น 3 เท่าเลย 🚀
โดยเฉพาะกับ FILTER, SORT, UNIQUE ที่ทำงานกับข้อมูลขนาดใหญ่
LET และ LAMBDA ทำงานต่างกันครับ:
**LET** ใช้กำหนดตัวแปรภายในสูตรเดียว (Local Variables) ค่าจะใช้ได้เฉพาะในสูตรนั้น ไม่สามารถเรียกใช้ซ้ำจากเซลล์อื่นได้
**LAMBDA** ใช้สร้างฟังก์ชันที่กำหนดเองซึ่งสามารถบันทึกใน Name Manager แล้วเรียกใช้ซ้ำได้ทั้งเวิร์กบุ๊ก หรือใช้กับ MAP, REDUCE, SCAN, BYCOL, BYROW
ส่วนใหญ่ LET และ LAMBDA ใช้ร่วมกัน โดยใช้ LET ภายใน LAMBDA เพื่อเก็บค่าชั่วคราวระหว่างคำนวณ 😎
ได้ครับ และนี่คือจุดแข็งสำคัญของ LET เลย 💡
ตัวแปรที่ประกาศทีหลังสามารถอ้างอิงตัวแปรที่ประกาศก่อนหน้าได้ เช่น =LET(price, 100, qty, 5, subtotal, price*qty, tax, subtotal*0.07, total, subtotal+tax, total)
ตัวแปร subtotal อ้างอิง price และ qty, ตัวแปร tax อ้างอิง subtotal, และ total อ้างอิง subtotal กับ tax ทำให้สามารถสร้างสูตรที่มีหลายขั้นตอนติดต่อกันได้อย่างชัดเจน
ฟังก์ชันที่ผู้เขียนโยงไว้กับ LET จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
BYCOL ส่งแต่ละคอลัมน์ทั้งคอลัมน์เข้า LAMBDA แล้ว return ผลลัพธ์เป็น Array แถวเดียว ต่างจาก MAP ที่ส่งทีละเซลล์ และ BYROW ที่ส่งทีละแถว ทำให้สามารถคำนวณ SUM, MAX, AVERAGE ของทุกคอลัมน์พร้อมกันในสูตรเดียว แทนที่จะต้องเขียนสูตรซ้ำหลายครั้ง ซึ่งช่วยลดโอกาสเกิดข้อผิดพลาดและทำให้แก้ไข logic ได้ง่ายกว่ามาก เหมาะสำหรับงาน dashboard summary, quality checking และการวิเคราตลัพธ์ทีละคอลัมน์แบบเป็นระบบ
BYROW เป็น LAMBDA Helper Function ที่ประมวลผลข้อมูลทีละแถว โดยส่งแต่ละแถวทั้งหมด (เป็น array) เข้าไปใน LAMBDA แล้ว return ผลลัพธ์เป็นคอลัมน์เดียว ที่เจ๋งคือ BYROW รองรับทั้ง short-form syntax (=BYROW(array, SUM)) สำหรับการ aggregate ง่ายๆ และ custom LAMBDA สำหรับ logic ซับซ้อนที่ต้องตรวจสอบหลายคอลัมน์พร้อมกัน เช่น ตรวจว่านักเรียนผ่านทุกวิชา (MIN>=50) หรือรวมข้อความหลายคอลัมน์ด้วย TEXTJOIN ต่างจาก MAP ที่ทำงานทีละ cell และ BYCOL ที่ทำงานทีละคอลัมน์ BYROW ทำให้คุณเขียน logic ครั้งเดียว แล้วประมวลผลทุกแถวพร้อมกันทันที
IF เป็นฟังก์ชันตรรกะพื้นฐานที่ใช้ตัดสินใจสองทางตามเงื่อนไข ตรวจสอบว่าเงื่อนไขเป็น TRUE หรือ FALSE แล้วคืนค่าที่แตกต่างกันไปตามผลลัพธ์ สามารถใช้ได้กับการเปรียบเทียบตัวเลข ข้อความ หรือวันที่ และเป็นพื้นฐานสำคัญของการสร้างสูตรแบบมีเงื่อนไข
IFERROR ช่วยดักจับ Error ทุกประเภทที่เกิดขึ้นในสูตร (#N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, #NULL!) แล้วเปลี่ยนเป็นค่าที่เราต้องการแทน
.
ที่เจ๋งคือมันช่วยให้รายงานและ Dashboard ดูสะอาด ไม่มี Error แสดงให้ผู้ใช้งานเห็น โดยถ้าสูตรไม่มี Error ก็จะ return ผลลัพธ์ปกติ
.
ส่วนตัวผมคิดว่าฟังก์ชันนี้เป็น "ตัวช่วยมหาเทพ" สำหรับคนทำรายงานเลยครับ 😎
LAMBDA สร้าง custom function ที่ใช้ซ้ำได้โดยไม่ต้องเขียน VBA กำหนด parameter และ calculation แล้วบันทึกผ่าน Name Manager (Ctrl+F3) ด้วยชื่อที่จดจำง่าย เรียกใช้เหมือนฟังก์ชันมาตรฐาน สูตรอยู่ที่เดียว แก้ไขที่เดียวมีผลทั้ง workbook ใช้ร่วมกับ helper functions (MAP, REDUCE, SCAN, BYROW, BYCOL, MAKEARRAY) สร้างสูตร dynamic array ขั้นสูงได้ รองรับ recursive LAMBDA เรียกตัวเองซ้ำจนถึงเงื่อนไข แทนที่สูตรยาวๆ ด้วย custom function ที่อ่านง่าย
MAKEARRAY สร้าง Dynamic Array ตามขนาดที่กำหนด (rows × cols) โดยใช้ LAMBDA function คำนวณค่าในแต่ละเซลล์ตามตำแหน่ง row และ column index (เริ่มที่ 1) ต่างจาก SEQUENCE ที่สร้างเฉพาะตัวเลขเรียงลำดับ MAKEARRAY สามารถสร้างข้อมูลได้หลากหลายรูปแบบตามการคำนวณที่กำหนดใน LAMBDA เช่น ตารางสูตรคูณ matrix ทางคณิตศาสตร์ pattern ข้อความ หรือค่าสุ่ม เหมาะสำหรับสร้าง dataset ขนาดใหญ่ที่มีรูปแบบเฉพาะ หรือ lookup table แบบ dynamic โดย LAMBDA จะถูกเรียกทำงานสำหรับทุกเซลล์ใน array ผลลัพธ์ ทำให้สร้างข้อมูลจำนวนมากได้อย่างรวดเร็วด้วยสูตรเดียว
MAP ส่งค่าทีละ element จาก Array หนึ่งหรือหลายตัวเข้าไปประมวลผลใน LAMBDA แล้วคืน Array ผลลัพธ์ที่มีขนาดเท่ากับ input array ต้นฉบับ เหมาะสำหรับ element-wise operations เช่น การแปลงค่าทุกตัว การตรวจสอบเงื่อนไขทีละเซลล์ หรือการคำนวณจากหลาย Array พร้อมกัน ต่างจาก BYROW/BYCOL ที่ส่งทั้งแถวหรือทั้งคอลัมน์ MAP จะส่งเฉพาะค่าเดี่ยวๆ ทีละตำแหน่ง
REDUCE เป็นฟังก์ชัน Helper ที่ทำงานร่วมกับ LAMBDA เพื่อวนลูปประมวลผลข้อมูลใน Array โดยรับค่าเริ่มต้น (initial_value) และส่งค่าเข้า LAMBDA ทีละ element เพื่อคำนวณค่าสะสม (accumulator) ที่สืบเนื่องจากรอบก่อนหน้า แล้ว return ผลลัพธ์สุดท้ายเพียงค่าเดียว ต่างจาก SCAN ที่ return Array ของทุกขั้นตอน REDUCE เหมาะสำหรับการสร้าง custom aggregation ที่ซับซ้อนกว่าฟังก์ชันมาตรฐาน
SCAN วนลูปผ่าน array โดยใช้ LAMBDA function คำนวณค่าสะสม (accumulator) และ return array ที่แสดงค่าสะสมในทุกขั้นตอนของการคำนวณ ต่างจาก REDUCE ที่ return เฉพาะค่าสุดท้าย SCAN เหมาะสำหรับ Running Total, Running Maximum/Minimum, การคำนวณดอกเบี้ยทบต้น หรือการแสดงผลลัพธ์แบบต่อเนื่องที่ต้องการเห็นทุกขั้นตอนของการเปลี่ยนแปลง ใช้งานได้ใน Excel 365 และ Excel 2024
SWITCH ประเมินนิพจน์หรือค่าหนึ่งค่า แล้วเปรียบเทียบกับรายการค่าที่กำหนดตามลำดับ เมื่อพบค่าที่ตรงกันจะส่งคืนผลลัพธ์ที่เชื่อมโยงทันที หากไม่ตรงกับค่าใดเลยสามารถกำหนด default value ได้ เหมาะสำหรับแทนที่ nested IF หลายชั้นด้วยไวยากรณ์ที่อ่านง่ายกว่ามาก
COPILOT เป็นฟังก์ชันแรกใน Excel ที่ใช้ AI (GPT-4.1-mini) ประมวลผลข้อมูลและสร้างข้อความตามคำสั่งที่กำหนด เหมาะสำหรับสรุปข้อมูล จัดหมวดหมู่ และสร้าง content อัตโนมัติ
IMAGE แสดงรูปภาพจาก URL ในเซลล์ Excel โดยรูปจะเป็นส่วนหนึ่งของเซลล์ สามารถกำหนดขนาด อัตราส่วน และ Alt Text ได้ เหมาะสำหรับสร้างรายการสินค้าหรือ Dashboard
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่