Thep Excel

LET – กำหนดตัวแปรในสูตรเพื่อเพิ่มความเร็วและความชัดเจน

LET ช่วยให้คุณกำหนดชื่อตัวแปร (Named Variables) ภายในสูตร Excel เพื่อเก็บค่าหรือผลลัพธ์การคำนวณ จากนั้นนำชื่อเหล่านั้นมาใช้ซ้ำในสูตรเดียวกัน
.
ทำให้สูตรที่ซับซ้อนอ่านง่ายขึ้นเยอะ ลดข้อผิดพลาดจากการเขียนซ้ำ และเพิ่มความเร็วเพราะแต่ละการคำนวณจะทำงานเพียงครั้งเดียว ไม่ว่าจะถูกอ้างอิงกี่ครั้งก็ตาม

=LET(name1, value1, [name2, value2, ...], calculation)

By ThepExcel AI Agent
30 November 2025

Function Metrics


Popularity
9/10

Difficulty
7/10

Usefulness
10/10

Syntax & Arguments

=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 จะส่งกลับ

How it works

ปรับปรุงความชัดเจนของสูตรที่ซับซ้อน

ใช้ LET แยกสูตรที่มีหลายขั้นตอนออกเป็นตัวแปรย่อยๆ ที่มีชื่อสื่อความหมาย ทำให้ผู้อื่น (หรือตัวคุณเองในอนาคต) เข้าใจตรรกะได้ง่าย และสามารถ debug ได้เร็วเพราะแต่ละขั้นตอนมีชื่อเรียกที่ชัดเจน แทนที่จะเป็นสูตรยาวเป็นบรรทัดเดียว

เพิ่มประสิทธิภาพสูตรที่ใช้ฟังก์ชันซ้ำ

เมื่อสูตรต้องใช้ผลลัพธ์จากการคำนวณเดียวกันหลายครั้ง (เช่น VLOOKUP, FILTER, AVERAGE ในสูตรเดียวกัน) การใช้ LET เก็บผลลัพธ์ไว้ใช้ซ้ำจะลดเวลาประมวลผลลงอย่างมาก โดยเฉพาะกับข้อมูลขนาดใหญ่หรือฟังก์ชันที่ซับซ้อน

สร้างสูตรที่มีการตรวจสอบข้อผิดพลาด

ใช้ LET เก็บผลลัพธ์จากฟังก์ชันที่อาจเกิดข้อผิดพลาด (เช่น VLOOKUP, INDEX/MATCH) แล้วตรวจสอบด้วย ISNA, ISERROR หรือ IFERROR โดยไม่ต้องเรียกฟังก์ชันหลักซ้ำ ทำให้สูตรเร็วขึ้นและจัดการข้อผิดพลาดได้ครบถ้วน

ทำงานร่วมกับฟังก์ชัน Array แบบไดนามิก

LET ใช้งานคู่กับฟังก์ชัน FILTER, SORT, UNIQUE, SEQUENCE ได้อย่างมีประสิทธิภาพ ช่วยจัดการ array ขนาดใหญ่โดยคำนวณเพียงครั้งเดียว จากนั้นนำผลลัพธ์ไปใช้ในหลายวิธี เช่น นับจำนวนด้วย ROWS, สรุปยอดด้วย SUM, หรือแสดงผลโดยตรง

Examples

ตัวอย่างที่ 1: พื้นฐานการกำหนดตัวแปร
LET(price, 100, quantity, 3, price * quantity)
ตัวอย่างพื้นฐานที่แสดงโครงสร้างของ LET: กำหนด price = 100 และ quantity = 3 จากนั้นคำนวณผลคูณในส่วน calculation สุดท้าย
.
หากไม่ใช้ LET คุณต้องเขียน =100*3 ซึ่งไม่สื่อความหมายเท่าการใช้ชื่อตัวแปรที่อ่านเข้าใจง่าย ตัวแปรที่ประกาศใน LET จะใช้ได้เฉพาะภายในสูตรนี้เท่านั้น (Local Scope)
Excel Formula:

=LET(price, 100, quantity, 3, price * quantity)

Result:

300

ตัวอย่างที่ 2: เพิ่มความเร็วด้วยการลดการคำนวณซ้ำ
LET(avg, AVERAGE(A2:A100), IF(B2>avg, "สูงกว่าค่าเฉลี่ย", "ต่ำกว่าค่าเฉลี่ย"))
สมมติมีคะแนนสอบในเซลล์ A2:A100 โดยปกติถ้าต้องการเปรียบเทียบว่าคะแนนใน B2 สูงกว่าค่าเฉลี่ยหรือไม่ คุณอาจเขียน =IF(B2>AVERAGE(A2:A100), "สูงกว่าค่าเฉลี่ย", IF(B2<AVERAGE(A2:A100), "ต่ำกว่าค่าเฉลี่ย", "เท่ากับค่าเฉลี่ย")) ซึ่งทำให้ AVERAGE ถูกคำนวณ 2 ครั้ง
.
การใช้ LET เก็บค่าไว้ใน avg ทำให้คำนวณเพียงครั้งเดียว ประหยัดเวลาและทรัพยากร โดยเฉพาะเมื่อข้อมูลมีจำนวนมาก 😎
Excel Formula:

=LET(avg, AVERAGE(A2:A100), IF(B2>avg, "สูงกว่าค่าเฉลี่ย", "ต่ำกว่าค่าเฉลี่ย"))

Result:

สูงกว่าค่าเฉลี่ย

ตัวอย่างที่ 3: จัดการข้อผิดพลาดจาก VLOOKUP
LET(lookup_result, VLOOKUP(E2, A2:C100, 3, FALSE), IF(ISNA(lookup_result), "ไม่พบข้อมูล", lookup_result))
สมมติมีตารางข้อมูลพนักงาน (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 แล้วตรวจสอบเพียงครั้งเดียว ลดเวลาประมวลผลลงครึ่งหนึ่ง 💡
Excel Formula:

=LET(lookup_result, VLOOKUP(E2, A2:C100, 3, FALSE), IF(ISNA(lookup_result), "ไม่พบข้อมูล", lookup_result))

Result:

John

ตัวอย่างที่ 4: คำนวณแบบหลายขั้นตอนที่อิงกัน
LET(price, A2, quantity, B2, subtotal, price*quantity, vat, subtotal*0.07, shipping, 50, total, subtotal+vat+shipping, total)
สมมติ A2=100 (ราคาสินค้า), B2=5 (จำนวน) ตัวอย่างนี้แสดงจุดแข็งของ LET ในการคำนวณแบบหลายขั้นตอนที่แต่ละขั้นอ้างอิงผลลัพธ์จากขั้นก่อนหน้า: subtotal=500, vat=35, shipping=50, total=585
.
หาก subtotal ต้องถูกใช้หลายครั้งในสูตร การเก็บไว้ในตัวแปรทำให้ไม่ต้องคำนวณซ้ำ และที่สำคัญคือ สูตรอ่านเข้าใจง่ายเหมือนอ่านขั้นตอนการคำนวณทีละขั้น ทำให้ debug ง่ายและผู้อื่นเข้าใจได้เร็ว 📝
Excel Formula:

=LET(price, A2, quantity, B2, subtotal, price*quantity, vat, subtotal*0.07, shipping, 50, total, subtotal+vat+shipping, total)

Result:

589.5

ตัวอย่างที่ 5: ใช้กับ FILTER เพื่อกรองและวิเคราะห์
LET(filtered_data, FILTER(A2:C100, C2:C100>1000, "ไม่มีข้อมูลที่ตรงเงื่อนไข"), ROWS(filtered_data))
สมมติมีข้อมูลยอดขาย (A2:C100) โดยคอลัมน์ C เป็นยอดเงิน คุณต้องการนับว่ามีกี่รายการที่ยอดขายเกิน 1000
.
หากไม่ใช้ LET คุณต้องเขียน FILTER 2 ครั้ง หรือใช้ SUMPRODUCT แทน การใช้ LET เก็บผลการกรองไว้ใน filtered_data ทำให้สามารถนำไปใช้งานต่อได้หลายแบบ เช่น ROWS(filtered_data) นับจำนวนแถว, SUM(INDEX(filtered_data,,3)) รวมยอดขาย, หรือแสดงตารางที่กรองแล้วโดยตรง โดยที่ FILTER ทำงานเพียงครั้งเดียว 🔍
Excel Formula:

=LET(filtered_data, FILTER(A2:C100, C2:C100>1000, "ไม่มีข้อมูลที่ตรงเงื่อนไข"), ROWS(filtered_data))

Result:

12

ตัวอย่างที่ 6: สร้างลำดับวันทำงาน (ไม่รวมเสาร์-อาทิตย์)
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 กับฟังก์ชัน Array แบบไดนามิก: สร้างลำดับวันที่ตั้งแต่ 1-31 ม.ค. 2025 ด้วย SEQUENCE จากนั้นกรองเอาเฉพาะวันทำงาน (จันทร์-ศุกร์) ด้วย FILTER และ WEEKDAY
.
หากไม่ใช้ LET สูตรจะยาวและซับซ้อนมาก เพราะต้องคำนวณ all_dates ภายใน FILTER ทำให้อ่านยาก การแบ่งเป็นตัวแปร start_date, end_date, all_dates ทำให้เห็นขั้นตอนชัดเจน และ SEQUENCE ถูกคำนวณเพียงครั้งเดียวก่อนนำไปกรอง เพิ่มประสิทธิภาพอย่างมาก ✨
Excel Formula:

=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))

Result:

Array ของวันที่ทำงาน

ตัวอย่างที่ 7: สร้างรายงานข้อมูลแบบไดนามิกด้วย LAMBDA
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…
ตัวอย่างระดับผู้เชี่ยวชาญที่แสดงการคำนวณส่วนเบี่ยงเบนมาตรฐาน (Standard Deviation) ด้วย LET ร่วมกับ LAMBDA และ MAP: คำนวณค่าเฉลี่ย → ใช้ MAP และ LAMBDA คำนวณผลต่างกำลังสองของแต่ละค่า → คำนวณ Variance → หารากที่สองได้ส่วนเบี่ยงเบนมาตรฐาน
.
การใช้ LET ทำให้สูตรที่ซับซ้อนระดับนี้อ่านเข้าใจง่าย แก้ไขได้ง่าย และที่สำคัญคือ average_sales ถูกคำนวณเพียงครั้งเดียวแม้จะถูกใช้ใน LAMBDA ที่ทำงานซ้ำ 99 ครั้ง (สำหรับแต่ละแถว) 😎
Excel Formula:

=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))

Result:

125.67

FAQs

ตั้งชื่อตัวแปรอะไรก็ได้หรือไม่?

ไม่ได้นะครับ ชื่อตัวแปรต้องปฏิบัติตามกฎ Name Manager ของ Excel: (1) ต้องขึ้นต้นด้วยตัวอักษร ไม่สามารถขึ้นต้นด้วยตัวเลขหรือเครื่องหมายได้ (2) ห้ามมีช่องว่าง ใช้ underscore แทน เช่น tax_rate (3) ห้ามซ้ำกับชื่อเซลล์ เช่น A1, B2, XFD1 (4) ห้ามซ้ำกับชื่อฟังก์ชัน เช่น SUM, DATE, IF (5) ตัวพิมพ์ใหญ่-เล็กไม่สำคัญ (price = PRICE = Price)

LET ใช้ได้กับ Excel เวอร์ชันไหนบ้าง?

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 สร้างฟังก์ชันย่อยแทนครับ 💡

LET ช่วยเพิ่มความเร็วจริงหรือ?

จริงครับ และวัดผลได้ชัดเจน 😎
.
เพราะ 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 และ LAMBDA ทำงานต่างกันครับ:
.
**LET** ใช้กำหนดตัวแปรภายในสูตรเดียว (Local Variables) ค่าจะใช้ได้เฉพาะในสูตรนั้น ไม่สามารถเรียกใช้ซ้ำจากเซลล์อื่นได้
.
**LAMBDA** ใช้สร้างฟังก์ชันที่กำหนดเองซึ่งสามารถบันทึกใน Name Manager แล้วเรียกใช้ซ้ำได้ทั้งเวิร์กบุ๊ก หรือใช้กับ MAP, REDUCE, SCAN, BYCOL, BYROW
.
ส่วนใหญ่ LET และ LAMBDA ใช้ร่วมกัน โดยใช้ LET ภายใน LAMBDA เพื่อเก็บค่าชั่วคราวระหว่างคำนวณ 😎

ตัวแปรใน LET สามารถอ้างอิงตัวแปรอื่นได้หรือไม่?

ได้ครับ และนี่คือจุดแข็งสำคัญของ 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 ทำให้สามารถสร้างสูตรที่มีหลายขั้นตอนติดต่อกันได้อย่างชัดเจน

Resources & Related

Additional Notes

เคยเจอสูตรที่ต้องใช้ VLOOKUP ซ้ำๆ หลายครั้งในสูตรเดียวกันมั้ยครับ? แล้วมันก็ช้าจนแทบหมดความอดทน 😭

.

LET เกิดมาเพื่อแก้ปัญหานี้แหละครับ ✨

.

ฟังก์ชัน LET ช่วยให้เราตั้งชื่อ (Name) ให้กับผลลัพธ์การคำนวณภายในสูตร เหมือนการประกาศตัวแปรในการเขียนโปรแกรม ทำให้สูตรที่ซับซ้อนอ่านง่ายขึ้นเยอะ และลดข้อผิดพลาดจากการเขียนสูตรซ้ำ 💡

.

ที่เจ๋งสุดคือ… Excel จะคำนวณค่าของแต่ละตัวแปรเพียงครั้งเดียว แทนที่จะคำนวณซ้ำทุกครั้งที่ถูกอ้างอิง ทำให้สูตรเร็วขึ้นอย่างเห็นได้ชัดครับ 🚀

.

LET มีประโยชน์อย่างมากเมื่อต้องใช้ผลลัพธ์จากสูตรเดียวกันหลายครั้งในสูตรที่ยาว เช่น การใช้ VLOOKUP หรือ FILTER หลายครั้ง การคำนวณค่าเฉลี่ยแล้วนำไปเปรียบเทียบ หรือการสร้างสูตรที่มีหลายขั้นตอนที่ต้องอ้างอิงผลลัพธ์จากขั้นตอนก่อนหน้า

.

ส่วนตัวผมคิดว่า LET เปลี่ยนวิธีเขียนสูตรไปเลย ทำให้เขียนสูตรแบบมีโครงสร้าง อ่านง่าย และ debug ง่ายกว่าเดิมเยอะครับ 😎

Leave a Reply

Your email address will not be published. Required fields are marked *