Thep Excel

LAMBDA – สร้างฟังก์ชันที่กำหนดเอง

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 ที่อ่านง่าย

=LAMBDA([parameter1, parameter2, ...], calculation)

By ThepExcel AI Agent
18 December 2025

Function Metrics


Popularity
9/10

Difficulty
8/10

Usefulness
10/10

Syntax & Arguments

=LAMBDA([parameter1, parameter2, ...], calculation)

Argument Type Required Default Description
parameter1 Name Optional parameter ตัวแรก ตั้งชื่ออะไรก็ได้ (เช่น x, price, quantity) ไม่ใช้จุดในชื่อ ไม่ควรขึ้นต้นด้วยตัวเลข parameter จะรับค่าจากการเรียกใช้ custom function หรือจาก helper functions เช่น MAP, REDUCE
parameter2 Name Optional parameter ตัวที่สอง (ถ้ามี) สามารถมี parameter เพิ่มเติมได้ไม่จำกัด (สูงสุด 253 parameters) ทุก parameter ต้องประกาศก่อน calculation รองรับ cell reference, string, number, array หรือ data type อื่นๆ
Name Optional parameter เพิ่มเติม (optional) สามารถมีได้หลายตัวตามความต้องการ ไม่จำกัดจำนวนจนถึง 253 parameters ทุก parameter ต้องประกาศก่อน calculation argument สุดท้าย
calculation Formula Yes สูตรคำนวณที่ใช้ parameters มาประมวลผล ต้องเป็น argument สุดท้ายเสมอ ต้อง return ค่าผลลัพธ์ออกมา สามารถใช้ฟังก์ชันอื่นๆ ภายใน calculation ได้ รวมถึง LET สำหรับประกาศตัวแปรภายใน

How it works

สร้างฟังก์ชันคำนวณที่ใช้บ่อย

แทนที่การพิมพ์สูตรซ้ำๆ เช่น แปลงหน่วยอุณหภูมิ คำนวณภาษี VAT คำนวณ discount ด้วย custom function ที่เรียกใช้ง่าย เช่น =TaxVAT(1000) แทนการพิมพ์ =1000*1.07 ทุกครั้ง

จัดระเบียบสูตรซับซ้อน

แยกสูตรยาวๆ ที่อ่านยากออกเป็น custom functions หลายตัว แต่ละตัวทำงานชัดเจน สูตรหลักอ่านง่ายขึ้น เช่น =CalculateProfit(revenue, cost) แทนสูตรยาว 10 บรรทัด แก้ไขที่เดียวมีผลทั้ง workbook

สร้าง Dynamic Array Function

ใช้ LAMBDA ร่วมกับ MAP, REDUCE, SCAN, BYROW, BYCOL สร้างฟังก์ชันที่ประมวลผล array ทีละ element หรือทีละแถว/คอลัมน์ เช่น filter ข้อมูลด้วยเงื่อนไขซับซ้อน หรือ transform ข้อมูลทีละ row แบบอัตโนมัติ

Recursive Pattern (Pattern ซ้ำๆ)

สร้าง LAMBDA ที่เรียกตัวเองซ้ำๆ จนกว่าจะถึงเงื่อนไขหยุด เช่น ลบช่องว่างซ้ำซ้อนออกทั้งหมดทีละตัว คำนวณ factorial, Fibonacci หรือ pattern อื่นที่ต้อง loop ซ้ำ ต้องมีเงื่อนไขหยุดเสมอเพื่อป้องกัน infinite loop

สร้าง Function Library สำหรับทีม

สร้างชุด custom functions มาตรฐานสำหรับองค์กร เช่น ฟังก์ชันคำนวณ commission ตาม rule บริษัท แชร์ workbook ให้ทีมใช้ custom functions เดียวกัน ทำให้ทีมทำงานสม่ำเสมอและแก้ไขง่าย

Examples

ตัวอย่างที่ 1: Foundation – ทดสอบ LAMBDA แบบ Inline
LAMBDA(x, x*2)(10)
สร้าง LAMBDA ที่รับ parameter x แล้วคูณด้วย 2 จากนั้นเรียกใช้ทันทีด้วย (10) ได้ผลลัพธ์ 20
.
วิธีนี้ใช้สำหรับทดสอบว่าสูตร LAMBDA ทำงานถูกต้องก่อนบันทึกลงใน Name Manager วงเล็บแรก (x, x*2) คือ definition ของ LAMBDA วงเล็บที่สอง (10) คือการเรียกใช้ function ด้วย argument 10
Excel Formula:

=LAMBDA(x, x*2)(10)

Result:

20

ตัวอย่างที่ 2: Foundation – Named LAMBDA ง่ายๆ
Ctrl+F3 → New → Name: Double → Refers to: =LAMBDA(x, x*2) จากนั้นเรียกใช้: =Double(25)
เปิด Name Manager ด้วย Ctrl+F3 กด New ตั้งชื่อว่า Double ใน Refers to ใส่ =LAMBDA(x, x*2) บันทึก จากนั้นเรียกใช้ได้ทั่ว workbook ด้วย =Double(25) ได้ผลลัพธ์ 50
.
ข้อสังเกต: เมื่อบันทึกลง Name Manager ไม่ต้องมี (10) ต่อท้าย เพราะเป็นแค่ definition ไม่ใช่การเรียกใช้ 😎
Excel Formula:

Ctrl+F3 → New → Name: Double → Refers to: =LAMBDA(x, x*2)
จากนั้นเรียกใช้: =Double(25)

Result:

50

ตัวอย่างที่ 3: Practical – แปลงหน่วยอุณหภูมิ
Name: CelsiusToFahrenheit → Refers to: =LAMBDA(celsius, celsius*9/5+32) เรียกใช้: =CelsiusToFahrenheit(100)
สร้าง custom function แปลง Celsius เป็น Fahrenheit ใช้สูตร (C × 9/5) + 32 บันทึกชื่อว่า CelsiusToFahrenheit เรียกใช้ด้วย =CelsiusToFahrenheit(100) ได้ 212°F ใช้แทนการจำสูตรแปลงหน่วย ชื่อฟังก์ชันบอกความหมายชัดเจน เรียกใช้ง่ายและอ่านง่าย
Excel Formula:

Name: CelsiusToFahrenheit → Refers to: =LAMBDA(celsius, celsius*9/5+32)
เรียกใช้: =CelsiusToFahrenheit(100)

Result:

212

ตัวอย่างที่ 4: Practical – หลาย Parameters
Name: BoxVolume → Refers to: =LAMBDA(length, width, height, length*width*height) เรียกใช้: =BoxVolume(5, 3, 2)
สร้างฟังก์ชันคำนวณปริมาตรกล่องรับ 3 parameters (length, width, height) คูณกันได้ปริมาตร เรียกใช้ด้วย =BoxVolume(5, 3, 2) ได้ 30 ตัวอย่างแสดงการรับหลาย parameters ลำดับต้องตรงกับการประกาศใน LAMBDA ตั้งชื่อ parameter ให้สื่อความหมายชัดเจนเพื่ออ่านง่าย
Excel Formula:

Name: BoxVolume → Refers to: =LAMBDA(length, width, height, length*width*height)
เรียกใช้: =BoxVolume(5, 3, 2)

Result:

30

ตัวอย่างที่ 5: Practical – ใช้ LET ภายใน LAMBDA
Name: CircleArea → Refers to: =LAMBDA(radius, LET(r_squared, radius^2, r_squared*PI())) เรียกใช้: =CircleArea(5)
ใช้ LET ภายใน LAMBDA เพื่อประกาศตัวแปร r_squared = radius^2 แล้วนำไปคูณกับ PI() ประโยชน์คือถ้าใช้ radius^2 หลายครั้งในสูตรเดียวกัน LET จะคำนวณครั้งเดียวแล้ว reuse ผลลัพธ์ ทำให้เร็วขึ้นและอ่านง่ายขึ้น เรียกใช้ด้วย =CircleArea(5) ได้พื้นที่วงกลม 78.54
Excel Formula:

Name: CircleArea → Refers to: =LAMBDA(radius, LET(r_squared, radius^2, r_squared*PI()))
เรียกใช้: =CircleArea(5)

Result:

78.54

ตัวอย่างที่ 6: Advanced – ใช้กับ MAP
MAP({10, 20, 30, 40, 50}, LAMBDA(v, v*1.07))
MAP ส่งทุกค่าใน array {10, 20, 30, 40, 50} เข้า LAMBDA ทีละตัว LAMBDA รับเป็น parameter v แล้วคูณ 1.07 (เพิ่ม VAT 7%)
.
MAP return array ใหม่ขนาดเท่าเดิมที่ทุกค่าผ่าน LAMBDA แล้ว ใช้สำหรับ apply การคำนวณเดียวกันกับหลายค่าพร้อมกัน ไม่ต้อง copy สูตรลงแต่ละเซลล์ 😎
Excel Formula:

=MAP({10, 20, 30, 40, 50}, LAMBDA(v, v*1.07))

Result:

{10.7, 21.4, 32.1, 42.8, 53.5}

ตัวอย่างที่ 7: Advanced – ใช้กับ REDUCE (2 parameters)
REDUCE(0, {5, 10, 15, 20}, LAMBDA(accumulator, value, accumulator+value))
REDUCE บวกสะสมค่าใน array {5, 10, 15, 20} เริ่มจาก initial value 0 LAMBDA รับ 2 parameters: accumulator (ค่าสะสม) และ value (ค่าปัจจุบัน) บวกกันแล้วเก็บเป็น accumulator ใหม่
.
รอบที่ 1: 0+5=5 รอบที่ 2: 5+10=15 รอบที่ 3: 15+15=30 รอบที่ 4: 30+20=50 REDUCE return ค่าเดียวหลังจากประมวลผลครบทุก element
Excel Formula:

=REDUCE(0, {5, 10, 15, 20}, LAMBDA(accumulator, value, accumulator+value))

Result:

50

ตัวอย่างที่ 8: Advanced – ใช้กับ BYROW
สมมติ A1:C3 มีตัวเลข: 10, 20, 30 40, 50, 60 70, 80, 90 =BYROW(A1:C3, LAMBDA(row, SUM(row)))
BYROW ส่งข้อมูลแต่ละแถวใน A1:C3 เข้า LAMBDA ทีละแถว parameter row เป็น array ของแถวนั้นๆ เช่น แถวแรก row = {10, 20, 30} LAMBDA คำนวณ SUM(row) ได้ 60
.
แถวที่สอง SUM({40, 50, 60}) = 150 แถวที่สาม SUM({70, 80, 90}) = 240 BYROW return array แนวตั้ง {60; 150; 240} ใช้สำหรับประมวลผลข้อมูลทีละแถวอัตโนมัติ
Excel Formula:

สมมติ A1:C3 มีตัวเลข:
10, 20, 30
40, 50, 60
70, 80, 90

=BYROW(A1:C3, LAMBDA(row, SUM(row)))

Result:

{60; 150; 240}

ตัวอย่างที่ 9: Advanced – Recursive LAMBDA (เรียกตัวเองซ้ำ)
Name: RemoveExtraSpaces → Refers to: =LAMBDA(text, IF(ISERROR(FIND(" ", text)), text, RemoveExtraSpaces(SUBSTITUTE(text, " ", " ")))) เรียกใช้: =RemoveExtraSpac…
Recursive LAMBDA เรียกตัวเองซ้ำจนกว่าจะไม่เจอช่องว่างซ้ำซ้อน (double space) ตรวจสอบด้วย FIND(" ", text) ถ้าไม่เจอ (ISERROR=TRUE) return text ออกมา
.
ถ้าเจอ แทนที่ double space ด้วย single space แล้วเรียก RemoveExtraSpaces ซ้ำอีกครั้ง วน loop จนกว่าจะไม่มี double space เหลือ
.
ข้อควรระวัง: ต้องมีเงื่อนไขหยุดเสมอ (ในที่นี้คือ ISERROR) ไม่เช่นนั้นจะเกิด infinite loop 😅
Excel Formula:

Name: RemoveExtraSpaces → Refers to:
=LAMBDA(text, IF(ISERROR(FIND("  ", text)), text, RemoveExtraSpaces(SUBSTITUTE(text, "  ", " "))))

เรียกใช้: =RemoveExtraSpaces("Hello    World")

Result:

"Hello World"

ตัวอย่างที่ 10: Advanced – Real-World (คำนวณ Commission แบบซับซ้อน)
Name: CalculateCommission → Refers to: =LAMBDA(sales, LET( tier1, IF(sales10000, IF(sales50000, (sales-50000)*0.12, 0), tier1 + tier2 + tier3 ) ) เรียกใช้: =Cal…
สร้างฟังก์ชันคำนวณ commission แบบ progressive tiers: 0-10,000 ได้ 5%, 10,001-50,000 ได้ 8%, 50,001 ขึ้นไปได้ 12% ใช้ LET ประกาศตัวแปร tier1, tier2, tier3 แล้วบวกรวมกัน
.
ขาย 65,000: tier1=500 (10,000×5%), tier2=3,200 (40,000×8%), tier3=1,800 (15,000×12%) รวม 5,500
.
ฟังก์ชันนี้ซับซ้อนถ้าเขียนในเซลล์ธรรมดา แต่ LAMBDA + LET ทำให้อ่านง่ายและใช้ซ้ำได้ทั่ว workbook แก้ไข rate ที่เดียวมีผลทั้งไฟล์ 😎
Excel Formula:

Name: CalculateCommission → Refers to:
=LAMBDA(sales,
  LET(
    tier1, IF(sales<=10000, sales*0.05, 500),
    tier2, IF(sales>10000, IF(sales<=50000, (sales-10000)*0.08, 3200), 0),
    tier3, IF(sales>50000, (sales-50000)*0.12, 0),
    tier1 + tier2 + tier3
  )
)

เรียกใช้: =CalculateCommission(65000)

Result:

6800

FAQs

LAMBDA ต่างจาก VBA อย่างไร?

LAMBDA เป็นสูตร Excel ปกติที่ทำงานบน Formula Bar ได้ทันทีโดยไม่ต้องเปิด VBA Editor ไฟล์ไม่ต้องบันทึกเป็น .xlsm ไม่มีปัญหา macro security และไม่ต้องเรียนรู้ภาษา VBA ผู้ใช้ Excel ทั่วไปสร้างได้โดยไม่ต้องเป็น programmer แต่มีข้อจำกัดคือทำได้แค่สูตรคำนวณ ไม่สามารถควบคุม UI, event handling หรือเชื่อมต่อ external API เหมือน VBA

ส่งไฟล์ที่มี LAMBDA ให้คนอื่นใช้ได้ไหม?

ได้ครับ ถ้าผู้รับใช้ Excel 365 หรือ Excel 2024 Named LAMBDA ที่สร้างผ่าน Name Manager จะติดไปกับไฟล์อัตโนมัติ ผู้รับเปิดไฟล์แล้วเรียกใช้ custom function ได้เลย
.
แต่ถ้าผู้รับใช้ Excel 2021, 2019 หรือเก่ากว่า จะขึ้น #NAME? error เพราะเวอร์ชันเหล่านั้นไม่รองรับ LAMBDA 😅 แนะนำให้แจ้งผู้รับว่าต้องใช้ Excel 365 หรือ 2024

วิธีสร้าง Named LAMBDA อย่างไร?

ทดสอบสูตรก่อนด้วย inline LAMBDA เช่น =LAMBDA(x, x*2)(10) → 20 ถ้าถูกต้องแล้ว กด Ctrl+F3 เปิด Name Manager กด New ใส่ชื่อ (เช่น Double) ใน Refers to ใส่ =LAMBDA(x, x*2) ไม่ต้องมี (10) ต่อท้าย กด OK เสร็จแล้วเรียกใช้ได้ทั่ว workbook ด้วย =Double(5) ข้อควรระวัง: ชื่อต้องขึ้นต้นด้วยตัวอักษร ไม่มีช่องว่าง ไม่ซ้ำกับฟังก์ชันมาตรฐาน

Recursive LAMBDA คืออะไร และใช้เมื่อไร?

Recursive LAMBDA คือ LAMBDA ที่เรียกตัวเองซ้ำๆ จนกว่าจะถึงเงื่อนไขหยุด ใช้สำหรับ pattern ที่ต้องทำซ้ำจนได้ผลลัพธ์ เช่น ลบตัวอักษรที่ไม่ต้องการออกทีละตัว คำนวณ factorial (5! = 5×4×3×2×1) หรือลบช่องว่างซ้ำซ้อนออกทั้งหมด
.
ต้องมีเงื่อนไข IF ที่หยุด recursion เสมอ มิฉะนั้นจะเกิด infinite loop และ Excel จะ error #NUM! (เกิน limit การเรียกซ้ำ) 😅 ใช้เมื่อ loop ปกติทำไม่ได้หรือยากต่อการเขียน

LAMBDA กับ LET ใช้ร่วมกันอย่างไร?

ใช้ LET ภายใน LAMBDA เพื่อประกาศตัวแปรชั่วคราว (temporary variables) ลดการคำนวณซ้ำ เช่น =LAMBDA(x, LET(sq, x^2, sq*PI())) คำนวณ x^2 ครั้งเดียวเก็บในตัวแปร sq แล้วนำไปใช้ต่อ
.
ถ้าใช้ x^2 หลายจุดในสูตรเดียวกัน LET จะคำนวณครั้งเดียวแล้ว reuse ผลลัพธ์ ทำให้เร็วขึ้นและอ่านง่ายขึ้น โดยเฉพาะ LAMBDA ที่มี calculation ซับซ้อนหรือมีการคำนวณซ้ำ LET ช่วยจัดระเบียบโค้ดและเพิ่มประสิทธิภาพ 😎

ตั้งชื่อ LAMBDA ซ้ำกับฟังก์ชันมาตรฐานได้ไหม?

ตั้งได้ แต่ไม่แนะนำครับ เพราะ Excel จะให้ความสำคัญกับฟังก์ชันมาตรฐานก่อน custom function ของคุณจะไม่ถูกเรียกใช้ เช่น ถ้าตั้งชื่อว่า SUM แล้วเรียก =SUM(A1:A10) Excel จะใช้ฟังก์ชัน SUM มาตรฐานแทนที่ LAMBDA ของคุณ
.
ควรตั้งชื่อที่ไม่ซ้ำกันและสื่อความหมายชัดเจน เช่น MySUM, SumWithTax, CustomSum เป็นต้น ชื่อที่ดีช่วยให้เข้าใจฟังก์ชันโดยไม่ต้องเปิด Name Manager ดู 😎

LAMBDA รองรับ Excel เวอร์ชันไหนบ้าง?

รองรับเฉพาะ Excel for Microsoft 365 และ Excel 2024 เท่านั้น ไม่มีใน Excel 2021, 2019, 2016, 2013 หรือเวอร์ชันเก่ากว่า ถ้าต้องการใช้ LAMBDA ต้อง subscribe Microsoft 365 หรืออัปเกรดเป็น Excel 2024 (perpetual license) Excel 2021 แม้จะเป็นเวอร์ชันใหม่ แต่ไม่มี LAMBDA เพราะ Microsoft จำกัด dynamic array features ให้เฉพาะ 365 และ 2024 เท่านั้น

ทำไมต้องใช้ LAMBDA แทนการ copy สูตรธรรมดา?

LAMBDA แก้ปัญหา 3 ข้อครับ:
.
(1) สูตรซับซ้อนซ้ำกันหลายเซลล์ แก้ไขยากเพราะต้องแก้ทุกเซลล์ LAMBDA แก้ไขที่เดียวมีผลทุกที่
(2) สูตรยาว 10 บรรทัดอ่านยาก LAMBDA แทนด้วยชื่อสั้นๆ อ่านง่าย
(3) ทำงานร่วมกับคนอื่นยาก ต้องอธิบายสูตร LAMBDA ตั้งชื่อชัดเจนแล้วทีมเรียกใช้ได้เลย
.
โดยเฉพาะองค์กรใหญ่ที่ต้องการ function library สำหรับทั้งทีม LAMBDA ทำให้ทีมทำงานสม่ำเสมอและบำรุงรักษาง่าย 😎

LAMBDA ช้าไหมถ้าใช้บ่อยในไฟล์ใหญ่?

LAMBDA ประมวลผลเท่ากับสูตร Excel ธรรมดา ไม่ช้ากว่า แต่ถ้า LAMBDA ซับซ้อนหรือเรียกใช้กับข้อมูลขนาดใหญ่ (เช่น MAP กับ array นับหมื่นเซลล์) อาจช้าได้
.
แนะนำให้ใช้ LET ภายใน LAMBDA เพื่อเก็บผลลัพธ์ชั่วคราวแทนการคำนวณซ้ำ และใช้ helper functions (MAP, REDUCE, SCAN) ที่เหมาะสมแทนการ nested IF หลายชั้น ถ้าต้องการประสิทธิภาพสูงสุดสำหรับข้อมูลขนาดใหญ่มาก ควรใช้ Power Query แทน

Resources & Related

Additional Notes

LAMBDA ช่วยให้คุณสร้าง custom function ของตัวเองได้โดยไม่ต้องเขียน VBA หรือ macro กำหนด parameter ที่รับค่าเข้ามา และ calculation ที่จะประมวลผล จากนั้นบันทึกผ่าน Name Manager ด้วยชื่อที่จดจำง่าย เรียกใช้ซ้ำได้ทั้ง workbook เหมือนฟังก์ชันมาตรฐานของ Excel
.
เหมาะสำหรับสูตรที่ใช้บ่อยหรือสูตรซับซ้อนที่ต้องการจัดระเบียบให้อ่านง่าย ทำงานร่วมกับ helper functions (MAP, REDUCE, SCAN, BYROW, BYCOL, MAKEARRAY) สร้างสูตร dynamic array ขั้นสูงได้
.
รองรับ recursive LAMBDA สำหรับ pattern ที่เรียกตัวเองซ้ำๆ มีตั้งแต่ Excel 365 และ Excel 2024

Leave a Reply

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