Thep Excel

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

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

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

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
4/10

Difficulty
7/10

Usefulness
5/10

Syntax & Arguments

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

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

Examples

เรียกใช้ Record.FieldNames ด้วย Function.Invoke
let MyRecord = [A = 1, B = 2, C = 3], Result = Function.Invoke(Record.FieldNames, {MyRecord}) in Result
เรียกฟังก์ชัน Record.FieldNames โดยส่งเรคอร์ด MyRecord ผ่านรายการ {MyRecord} ผลลัพธ์คือรายชื่อฟิลด์ทั้งหมด
Power Query Formula:

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

Result:

{"A", "B", "C"}

เรียกใช้ Text.Combine ด้วยหลาย argument
let Words = {"Hello", "Power", "Query"}, Separator = " ", Result = Function.Invoke(Text.Combine, {Words, Separator}) in Result
Function.Invoke ส่ง argument สองตัว: รายการคำและตัวคั่น เหมือนกับ Text.Combine(Words, Separator)
Power Query Formula:

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

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
Power Query Formula:

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

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) แต่เรียกไดนามิก
Power Query Formula:

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

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

Additional Notes

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

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

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

Leave a Reply

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