---
title: LET – กำหนดตัวแปรในสูตรเพื่อเพิ่มความเร็วและความชัดเจน
url: https://www.thepexcel.com/functions/excel/logical/let/
type: function-explainer
program: Excel
syntax: "=LET(name1, value1, [name2, value2, ...], calculation)"
date: 2025-11-30
updated: 2025-12-18
scores:
  popularity: 9
  difficulty: 7
  usefulness: 10
---

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

> กำหนดชื่อตัวแปรให้ค่าหรือผลการคำนวณเพื่อนำไปใช้ซ้ำในสูตร

## คำอธิบาย

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

## Syntax

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

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| name1 | Yes | Text |  | ชื่อตัวแปรแรก ต้องขึ้นต้นด้วยตัวอักษร ไม่สามารถใช้ชื่อที่ขัดแย้งกับชื่อเซลล์ (A1, B2) หรือชื่อฟังก์ชัน (SUM, IF) ไม่มีช่องว่าง (ใช้ underscore แทน เช่น tax_rate) |
| value1 | Yes | Any |  | ค่าหรือสูตรที่ต้องการกำหนดให้กับ name1 สามารถเป็นตัวเลข ข้อความ ช่วงข้อมูล หรือผลลัพธ์จากฟังก์ชันอื่นๆ ได้ |
| name2 | No | Text | - | ชื่อตัวแปรที่สอง (ถ้ามี) ปฏิบัติตามกฎเดียวกับ name1 |
| value2 | No | Any | - | ค่าที่กำหนดให้กับ name2 สามารถอ้างอิงตัวแปรที่ประกาศก่อนหน้า (name1) ได้ สามารถเพิ่มคู่ name/value ได้สูงสุด 126 คู่ |
| calculation | Yes | Any |  | สูตรสุดท้ายที่ใช้ตัวแปรที่ประกาศไว้มาคำนวณผลลัพธ์ ต้องเป็น argument สุดท้ายเสมอ และเป็นค่าที่ LET จะส่งกลับ |

## เคสการใช้งาน

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

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

_เหมาะกับ:_ complex-formula

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

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

_เหมาะกับ:_ optimization

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

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

_เหมาะกับ:_ error-handling

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

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

_เหมาะกับ:_ array-formulas

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: พื้นฐานการกำหนดตัวแปร

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

**ผลลัพธ์:** `300`

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

### 2. ตัวอย่างที่ 2: เพิ่มความเร็วด้วยการลดการคำนวณซ้ำ

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

**ผลลัพธ์:** `สูงกว่าค่าเฉลี่ย`

สมมติมีคะแนนสอบในเซลล์ A2:A100 โดยปกติถ้าต้องการเปรียบเทียบว่าคะแนนใน B2 สูงกว่าค่าเฉลี่ยหรือไม่ คุณอาจเขียน =IF(B2>AVERAGE(A2:A100), "สูงกว่าค่าเฉลี่ย", IF(B2

### 3. ตัวอย่างที่ 3: จัดการข้อผิดพลาดจาก VLOOKUP

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

**ผลลัพธ์:** `John`

สมมติมีตารางข้อมูลพนักงาน (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 แล้วตรวจสอบเพียงครั้งเดียว ลดเวลาประมวลผลลงครึ่งหนึ่ง 💡

### 4. ตัวอย่างที่ 4: คำนวณแบบหลายขั้นตอนที่อิงกัน

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

**ผลลัพธ์:** `589.5`

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

### 5. ตัวอย่างที่ 5: ใช้กับ FILTER เพื่อกรองและวิเคราะห์

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

**ผลลัพธ์:** `12`

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

### 6. ตัวอย่างที่ 6: สร้างลำดับวันทำงาน (ไม่รวมเสาร์-อาทิตย์)

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

### 7. ตัวอย่างที่ 7: สร้างรายงานข้อมูลแบบไดนามิกด้วย LAMBDA

```excel
=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`

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

## หมายเหตุเพิ่มเติม

💡 **Tip จากประสบการณ์:**\n\nพอได้ลองใช้ LET มาสักพักหนึ่ง ผมพบว่ามันเปลี่ยนวิธีเขียนสูตรไปเลย 😎 แทนที่จะคิดแบบ "สูตรยาวๆ บรรทัดเดียว" เราจะเริ่มคิดแบบ "แยกเป็นขั้นตอน" คล้ายๆ เขียนโปรแกรม\n.\nที่สำคัญคือ เวลา debug หรือ maintain สูตรเก่าที่เราเขียนไว้ นานๆ มาอ่านทีนึงก็เข้าใจได้ทันที เพราะมีชื่อตัวแปรบอกว่าแต่ละส่วนทำอะไร\n\n**ข้อผิดพลาดที่เจอบ่อย (จากประสบการณ์จริง 😅):**\n\n1. **ลืมใส่ calculation ท้ายสุด** - LET ต้องจบด้วยสูตรคำนวณเสมอ ไม่สามารถจบด้วยค่าตัวแปรเฉยๆ ได้\n   ถูก: =LET(x, 5, y, 10, x+y)\n   ผิด: =LET(x, 5, y, 10)\n\n2. **ใช้ชื่อที่ขัดแย้งกับเซลล์** - ห้ามตั้งชื่อเป็น A1, B2, C100 เพราะจะสับสนกับการอ้างอิงเซลล์ ใช้ชื่อที่มีความหมายแทน เช่น total_sales, tax_rate\n\n3. **อ้างอิงตัวแปรที่ยังไม่ได้ประกาศ** - ต้องประกาศตัวแปรก่อนจึงจะอ้างอิงได้\n   ผิด: =LET(total, subtotal+tax, subtotal, 100, tax, 7, total)\n   ถูก: =LET(subtotal, 100, tax, 7, total, subtotal+tax, total)\n\n4. **คาดหวังว่าตัวแปรจะใช้ได้นอกสูตร** - ตัวแปรใน LET เป็น Local Variables ใช้ได้เฉพาะในสูตรนั้นเท่านั้น ไม่สามารถอ้างอิงจากเซลล์อื่นได้\n\n**เทคนิคการใช้งาน Best Practices:**\n\n1. **ขึ้นบรรทัดใหม่เพื่อความชัดเจน** - กด Alt+Enter ใน Formula Bar เพื่อแบ่งสูตรหลายบรรทัด ทำให้อ่านง่ายขึ้นมาก\n```\n=LET(\n  price, A2,\n  qty, B2,\n  subtotal, price*qty,\n  tax, subtotal*0.07,\n  total, subtotal+tax,\n  total\n)\n```\n\n2. **ตั้งชื่อที่สื่อความหมาย** - ใช้ชื่อที่อธิบายได้ชัดเจน ดีกว่าใช้ x, y, z เช่น filtered_sales ดีกว่า fs, average_score ดีกว่า avg\n\n3. **จัดกลุ่มตัวแปรตามหน้าที่** - ประกาศตัวแปรที่เกี่ยวข้องกันไว้ใกล้กัน เช่น วางตัวแปร Input ด้านบน จากนั้นตัวแปรคำนวณ แล้วปิดท้ายด้วย calculation\n\n4. **เก็บ Array Formulas ที่ซับซ้อน** - ใช้ LET กับ FILTER, SORT, UNIQUE, SEQUENCE เพื่อหลีกเลี่ยงการคำนวณซ้ำ\n\n**Pattern ที่ใช้บ่อย:**\n\n```\n# Error Handling Pattern\n=LET(result, VLOOKUP(A1, Table, 2, 0), IF(ISNA(result), \"ไม่พบข้อมูล\", result))\n\n# Performance Pattern\n=LET(filtered, FILTER(Data, Amount>1000), ROWS(filtered) & \" รายการ ยอดรวม \" & SUM(INDEX(filtered,,3)))\n\n# Multi-Step Calculation Pattern\n=LET(step1, calculation1, step2, calculation2_using_step1, step3, calculation3_using_step2, final_result)\n\n# Dynamic Array Pattern\n=LET(dates, SEQUENCE(31,1,DATE(2025,1,1),1), weekdays, FILTER(dates, WEEKDAY(dates,2)<6), weekdays)\n```\n\n**ข้อจำกัดที่ควรรู้:**\n\n- ใช้ได้เฉพาะ Excel 365, Excel 2021, Excel 2024 ไม่รองรับ Excel 2019 ขึ้นลงไป\n- ตัวแปรสูงสุด 126 คู่ต่อ LET (แต่ไม่แนะนำให้ใช้เยอะจนเกินไป)\n- ไม่สามารถ Nest LET ภายใน LET ได้อย่างมีประสิทธิภาพ (ใช้ตัวแปรหลายตัวในชั้นเดียวแทน)\n- Scope ของตัวแปรจำกัดอยู่ในสูตรเดียว ไม่สามารถแชร์ระหว่างเซลล์ได้

## คำถามที่พบบ่อย

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

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

**Q: 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 ⚠️

**Q: สามารถประกาศตัวแปรได้กี่ตัว?**

สามารถประกาศได้สูงสุด 126 คู่ชื่อ-ค่า (name/value pairs) ในสูตร LET เดียว แต่ในทางปฏิบัติไม่ควรใช้เยอะเกินไป เพราะจะทำให้สูตรอ่านยาก
.
ส่วนตัวผมแนะนำให้ใช้ 3-7 ตัวแปรต่อสูตร หากต้องการมากกว่านั้นควรแบ่งเป็นหลายเซลล์หรือใช้ LAMBDA สร้างฟังก์ชันย่อยแทนครับ 💡

**Q: 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 ที่ทำงานกับข้อมูลขนาดใหญ่

**Q: LET กับ LAMBDA ต่างกันอย่างไร?**

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

**Q: ตัวแปรใน 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 ทำให้สามารถสร้างสูตรที่มีหลายขั้นตอนติดต่อกันได้อย่างชัดเจน

## ฟังก์ชันที่เกี่ยวข้อง

- [LAMBDA – สร้างฟังก์ชันที่กำหนดเอง](https://www.thepexcel.com/functions/excel/logical/lambda/)
- [IF – ฟังก์ชันตรรกะพื้นฐาน](https://www.thepexcel.com/functions/excel/logical/if/)
- [FILTER – ฟังก์ชันกรองข้อมูลแบบไดนามิก](https://www.thepexcel.com/functions/excel/lookup-and-reference/filter/)
- [IFERROR – ดักจับ Error และเปลี่ยนเป็นค่าอื่น](https://www.thepexcel.com/functions/excel/logical/iferror/)
- [VLOOKUP – ฟังก์ชันค้นหาค่าแนวตั้งจากตาราง](https://www.thepexcel.com/functions/excel/lookup-and-reference/vlookup/)
- [MAP – ประมวลผลทุก Element ใน Array ด้วย LAMBDA](https://www.thepexcel.com/functions/excel/logical/map/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Support: LET function](https://support.microsoft.com/en-us/office/let-function-34842dd8-b92b-4d3f-b325-b8b8f9908999) _(official)_
- [ExcelJet: Excel LET function](https://exceljet.net/functions/let-function) _(guide)_
- [Microsoft Tech Community: Introducing LET](https://techcommunity.microsoft.com/t5/excel-blog/introducing-let/ba-p/1375029) _(article)_
- [ExcelIsFun: LET Function Tutorial (YouTube)](https://www.youtube.com/watch?v=5i0Qx5hJKXk) _(video)_

---

_Source: [https://www.thepexcel.com/functions/excel/logical/let/](https://www.thepexcel.com/functions/excel/logical/let/)_
