Thep Excel

Function.Invokeเรียกใช้ฟังก์ชันแบบไดนามิก

Function.Invoke เรียกใช้ฟังก์ชันโดยส่งรายการอาร์กิวเมนต์เป็นพารามิเตอร์ ใช้สำหรับการเรียกฟังก์ชันแบบไดนามิก

fx
= Function.Invoke(function, args) as any

ความนิยม4/10
ความยาก7/10
ประโยชน์5/10

อัปเดต 12 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
function function ฟังก์ชันที่ต้องการเรียกใช้ (เช่น Record.FieldNames, List.Sum, Text.Combine)
args list รายการ (list) ที่ประกอบด้วยอาร์กิวเมนต์ที่ต้องการส่งให้ฟังก์ชัน

Additional Notes

Function.Invoke(function, args) ใช้เรียกใช้ฟังก์ชันแบบไดนามิก โดยส่งฟังก์ชันเป้าหมายและรายการอาร์กิวเมนต์ไปยังฟังก์ชันนี้

เพื่อให้เข้าใจชัดเจน ส่วนมากการเรียกฟังก์ชันตรงๆ เราทำได้เลย เช่น List.Sum({1,2,3}) แต่ถ้าเราต้องการให้โปรแกรมตัดสินใจว่าจะใช้ฟังก์ชันไหน ตามเงื่อนไขที่เปลี่ยนไป ก็จะใช้ Function.Invoke ช่วยเรียกฟังก์ชันแบบไดนามิก

ที่เจ๋งคือ Function.Invoke ทำให้คุณส่งอาร์กิวเมนต์ไปหลายตัวในรูปแบบรายการได้ ไม่ต้องเขียนอาร์กิวเมนต์ทีละตัว เหมาะมากสำหรับ higher-order functions และการสร้าง wrapper logic ครับ 😎

Examples

เรียกใช้ Record.FieldNames ด้วย Function.Invokelet MyRecord = [A = 1, B = 2, C = 3], Result = Function.Invoke(Record.FieldNames, {MyRecord}) in Result

เรียกฟังก์ชัน Record.FieldNames โดยส่งเรคอร์ด MyRecord ผ่านรายการ {MyRecord} ผลลัพธ์คือรายชื่อฟิลด์ทั้งหมด

fx
let
MyRecord = [A = 1, B = 2, C = 3],
Result = Function.Invoke(Record.FieldNames, {MyRecord})
in
Result

ผลลัพธ์{"A", "B", "C"}
เรียกใช้ Text.Combine ด้วยหลาย argumentlet Words = {"Hello", "Power", "Query"}, Separator = " ", Result = Function.Invoke(Text.Combine, {Words, Separator}) in Result

Function.Invoke ส่ง argument สองตัว: รายการคำและตัวคั่น เหมือนกับ Text.Combine(Words, Separator)

fx
let
Words = {"Hello", "Power", "Query"},
Separator = " ",
Result = Function.Invoke(Text.Combine, {Words, Separator})
in
Result

ผลลัพธ์"Hello Power Query"
เรียกฟังก์ชันแบบไดนามิก ตามเงื่อนไขlet Numbers = {1, 2, 3, 4, 5}, Operation = "Sum", ChosenFunction = if Operation = "Sum" then List.Sum else List.Average, Result = Function.Invoke(ChosenFunction…

ตัวอย่างการใช้ Function.Invoke เพื่อเลือกฟังก์ชันแบบไดนามิก ตามค่าตัวแปร Operation

fx
let
Numbers = {1, 2, 3, 4, 5},
Operation = "Sum",
ChosenFunction = if Operation = "Sum" then List.Sum else List.Average,
Result = Function.Invoke(ChosenFunction, {Numbers})
in
Result

ผลลัพธ์15 (ถ้า Operation="Sum")
ใช้กับ List.Sum โดยตรงlet Numbers = {10, 20, 30}, Result = Function.Invoke(List.Sum, {Numbers}) in Result

Function.Invoke(List.Sum, {Numbers}) มีผลเหมือน List.Sum(Numbers) แต่เรียกไดนามิก

fx
let
Numbers = {10, 20, 30},
Result = Function.Invoke(List.Sum, {Numbers})
in
Result

ผลลัพธ์60

FAQs

ต้องใช้ Function.Invoke หรือใช้การเรียกฟังก์ชันตรงๆได้?+

ถ้ารู้ฟังก์ชันแน่นอน ให้เรียกตรงๆเลยจะชัดเจนกว่า แต่ถ้าต้องเลือกฟังก์ชันตามเงื่อนไข จึงใช้ Function.Invoke

args ต้องใส่อาร์กิวเมนต์ในรูปแบบ list เสมอหรือ?+

ใช่ args ต้องเป็น list เสมอ แม้ว่าฟังก์ชันจะมี argument ตัวเดียว ก็ต้องใส่ {argument} ในรูปแบบรายการ

ใช้ได้กับฟังก์ชันที่มี optional argument หรือไม่?+

ได้ แต่ต้องใส่ argument ในลำดับที่ถูกต้อง ถ้าไม่ใช้ optional argument ก็ไม่ต้องใส่ในรายการ

เวอร์ชัน Power Query ไหนเริ่มมี Function.Invoke?+

Function.Invoke มีมาตั้งแต่ Power Query 2016 ขึ้นไป

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ Function.Invoke จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้Function.InvokeFunction values
Function values (2)
Function.From

Function.From ใช้เพื่อแปลงฟังก์ชันที่รับเฉพาะลิสต์เดียว (unary function) ให้กลายเป็นฟังก์ชันที่รับพารามิเตอร์แยกกัน

Function.InvokeAfter

Function.InvokeAfter เรียกใช้ฟังก์ชันหลังจากรอเวลาที่กำหนด นำไปใช้ในการควบคุมความเร็วเรียกข้อมูล API หรือเพิ่มความล่าช้าระหว่างการประมวลผล

Expression functions (1)
Expression.Evaluate

Expression.Evaluate ใช้สำหรับประเมินผลนิพจน์ M ที่เก็บไว้เป็นข้อความ โดยสามารถระบุตัวแปรและฟังก์ชันที่ใช้ได้ในสภาพแวดล้อม ทำให้สามารถเขียนโค้ด M แบบไดนามิก

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่