LET ช่วยให้คุณกำหนดชื่อตัวแปร (Named Variables) ภายในสูตร Excel เพื่อเก็บค่าหรือผลลัพธ์การคำนวณ จากนั้นนำชื่อเหล่านั้นมาใช้ซ้ำในสูตรเดียวกัน
.
ทำให้สูตรที่ซับซ้อนอ่านง่ายขึ้นเยอะ ลดข้อผิดพลาดจากการเขียนซ้ำ และเพิ่มความเร็วเพราะแต่ละการคำนวณจะทำงานเพียงครั้งเดียว ไม่ว่าจะถูกอ้างอิงกี่ครั้งก็ตาม
=LET(name1, value1, [name2, value2, ...], calculation)
=LET(name1, value1, [name2, value2, ...], calculation)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| name1 | Text | Yes | ชื่อตัวแปรแรก ต้องขึ้นต้นด้วยตัวอักษร ไม่สามารถใช้ชื่อที่ขัดแย้งกับชื่อเซลล์ (A1, B2) หรือชื่อฟังก์ชัน (SUM, IF) ไม่มีช่องว่าง (ใช้ underscore แทน เช่น tax_rate) | |
| value1 | Any | Yes | ค่าหรือสูตรที่ต้องการกำหนดให้กับ name1 สามารถเป็นตัวเลข ข้อความ ช่วงข้อมูล หรือผลลัพธ์จากฟังก์ชันอื่นๆ ได้ | |
| name2 | Text | Optional | – | ชื่อตัวแปรที่สอง (ถ้ามี) ปฏิบัติตามกฎเดียวกับ name1 |
| value2 | Any | Optional | – | ค่าที่กำหนดให้กับ name2 สามารถอ้างอิงตัวแปรที่ประกาศก่อนหน้า (name1) ได้ สามารถเพิ่มคู่ name/value ได้สูงสุด 126 คู่ |
| calculation | Any | Yes | สูตรสุดท้ายที่ใช้ตัวแปรที่ประกาศไว้มาคำนวณผลลัพธ์ ต้องเป็น argument สุดท้ายเสมอ และเป็นค่าที่ LET จะส่งกลับ |
ใช้ 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, price * quantity)=LET(price, 100, quantity, 3, price * quantity)
300
LET(avg, AVERAGE(A2:A100), IF(B2>avg, "สูงกว่าค่าเฉลี่ย", "ต่ำกว่าค่าเฉลี่ย"))=LET(avg, AVERAGE(A2:A100), IF(B2>avg, "สูงกว่าค่าเฉลี่ย", "ต่ำกว่าค่าเฉลี่ย"))
สูงกว่าค่าเฉลี่ย
LET(lookup_result, VLOOKUP(E2, A2:C100, 3, FALSE), IF(ISNA(lookup_result), "ไม่พบข้อมูล", lookup_result))=LET(lookup_result, VLOOKUP(E2, A2:C100, 3, FALSE), IF(ISNA(lookup_result), "ไม่พบข้อมูล", lookup_result))
John
LET(price, A2, quantity, B2, subtotal, price*quantity, vat, subtotal*0.07, shipping, 50, total, subtotal+vat+shipping, total)=LET(price, A2, quantity, B2, subtotal, price*quantity, vat, subtotal*0.07, shipping, 50, total, subtotal+vat+shipping, total)
589.5
LET(filtered_data, FILTER(A2:C100, C2:C100>1000, "ไม่มีข้อมูลที่ตรงเงื่อนไข"), ROWS(filtered_data))=LET(filtered_data, FILTER(A2:C100, C2:C100>1000, "ไม่มีข้อมูลที่ตรงเงื่อนไข"), ROWS(filtered_data))
12
LET(start_date, DATE(2025,1,1), end_date, DATE(2025,1,31), all_dates, SEQUENCE(end_date-start_date+1, 1, start_date, 1), FILTER(all_dates, WEEKDAY(all_dates,2)=LET(start_date, DATE(2025,1,1), end_date, DATE(2025,1,31), all_dates, SEQUENCE(end_date-start_date+1, 1, start_date, 1), FILTER(all_dates, WEEKDAY(all_dates,2)<6))
Array ของวันที่ทำงาน
LET(sales_data, A2:A100, average_sales, AVERAGE(sales_data), square_diff, MAP(sales_data, LAMBDA(x, (x-average_sales)^2)), variance, SUM(square_diff)/COUNT(sale…=LET(sales_data, A2:A100, average_sales, AVERAGE(sales_data), square_diff, MAP(sales_data, LAMBDA(x, (x-average_sales)^2)), variance, SUM(square_diff)/COUNT(sales_data), SQRT(variance))
125.67
ไม่ได้นะครับ ชื่อตัวแปรต้องปฏิบัติตามกฎ 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 ทำให้สามารถสร้างสูตรที่มีหลายขั้นตอนติดต่อกันได้อย่างชัดเจน
เคยเจอสูตรที่ต้องใช้ VLOOKUP ซ้ำๆ หลายครั้งในสูตรเดียวกันมั้ยครับ? แล้วมันก็ช้าจนแทบหมดความอดทน 😭
.
LET เกิดมาเพื่อแก้ปัญหานี้แหละครับ ✨
.
ฟังก์ชัน LET ช่วยให้เราตั้งชื่อ (Name) ให้กับผลลัพธ์การคำนวณภายในสูตร เหมือนการประกาศตัวแปรในการเขียนโปรแกรม ทำให้สูตรที่ซับซ้อนอ่านง่ายขึ้นเยอะ และลดข้อผิดพลาดจากการเขียนสูตรซ้ำ 💡
.
ที่เจ๋งสุดคือ… Excel จะคำนวณค่าของแต่ละตัวแปรเพียงครั้งเดียว แทนที่จะคำนวณซ้ำทุกครั้งที่ถูกอ้างอิง ทำให้สูตรเร็วขึ้นอย่างเห็นได้ชัดครับ 🚀
.
LET มีประโยชน์อย่างมากเมื่อต้องใช้ผลลัพธ์จากสูตรเดียวกันหลายครั้งในสูตรที่ยาว เช่น การใช้ VLOOKUP หรือ FILTER หลายครั้ง การคำนวณค่าเฉลี่ยแล้วนำไปเปรียบเทียบ หรือการสร้างสูตรที่มีหลายขั้นตอนที่ต้องอ้างอิงผลลัพธ์จากขั้นตอนก่อนหน้า
.
ส่วนตัวผมคิดว่า LET เปลี่ยนวิธีเขียนสูตรไปเลย ทำให้เขียนสูตรแบบมีโครงสร้าง อ่านง่าย และ debug ง่ายกว่าเดิมเยอะครับ 😎