Thep Excel

Record.Field – ดึงค่า Field จาก Record

Record.Field ดึงค่าของฟิลด์ที่ระบุจากบันทึก (record) โดยใช้ชื่อฟิลด์เป็นข้อความ ต่างจาก Record.FieldOrDefault ตรงที่จะเกิดข้อผิดพลาดหากฟิลด์ไม่พบ

=Record.Field(record as record, field as text) as any

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
6/10

Difficulty
3/10

Usefulness
6/10

Syntax & Arguments

=Record.Field(record as record, field as text) as any

Argument Type Required Default Description
record record Yes Record ที่ต้องการดึงค่า
field text Yes ชื่อ Field ที่ต้องการดึงค่า (เป็น Text)

How it works

ดึงค่าด้วยชื่อ Field จากตัวแปร

เมื่อชื่อ Field ที่ต้องการดึงถูกเก็บอยู่ในตัวแปร หรือมาจากการคำนวณ (Dynamic Field Access)

เข้าถึง Record ใน List

ใช้ร่วมกับ List.Transform เพื่อดึงค่า Field จาก List ของ Record

Examples

ตัวอย่างที่ 1: ดึงค่าพื้นฐาน
Record.Field([CustomerID = 1, Name = "Bob"], "Name")
ดึงค่าของ Field "Name" ออกมา เพราะเราบอกชัดเจนว่าต้องการค่า "Name" ฟังก์ชันจึงส่งกลับข้อความ Bob
Power Query Formula:

=Record.Field([CustomerID = 1, Name = "Bob"], "Name")

Result:

"Bob"

ตัวอย่างที่ 2: ใช้ชื่อ Field ภาษาไทย
Record.Field([ชื่อ = "สมชาย", อายุ = 30], "ชื่อ")
รองรับชื่อ Field ภาษาไทยได้ไม่มีปัญหา ส่วนตัวผมใช้เป็นประจำทำให้รหัสอ่านเข้าใจง่ายขึ้น
Power Query Formula:

=Record.Field([ชื่อ = "สมชาย", อายุ = 30], "ชื่อ")

Result:

"สมชาย"

ตัวอย่างที่ 3: การดึงค่าแบบ Dynamic
let Source = [A=10, B=20, C=30], TargetField = "B", Result = Record.Field(Source, TargetField) in Result
ใช้ตัวแปร TargetField เก็บชื่อ Field ที่ต้องการดึงค่า ทำให้สามารถเปลี่ยนชื่อ Field ได้ตามต้องการ (Dynamic) นี่คือจุดเด่นหลักของ Record.Field
Power Query Formula:

let
    Source = [A=10, B=20, C=30],
    TargetField = "B",
    Result = Record.Field(Source, TargetField)
in
    Result

Result:

20

ตัวอย่างที่ 4: ใช้กับ JSON Data
let JsonData = Json.Document("{\"id\": 101, \"status\": \"Active\"}"), Status = Record.Field(JsonData, "status") in Status
เมื่อ JSON ถูก Parse เป็น Record จะได้ข้อมูลที่เป็น Field ต่างๆ Record.Field ช่วยดึงค่าจาก Field ที่กำหนดออกมาได้สะดวก
Power Query Formula:

let
    JsonData = Json.Document("{\"id\": 101, \"status\": \"Active\"}"),
    Status = Record.Field(JsonData, "status")
in
    Status

Result:

"Active"

FAQs

ต่างจาก [FieldName] อย่างไร?

ผมเห็นบ่อยที่คนสับสน Record.Field ยืดหยุ่นกว่าเพราะรับชื่อฟิลด์เป็นข้อความ (dynamic) ส่วน [FieldName] ต้องเขียนชื่อตายตัวในสูตร ถ้าต้องการเปลี่ยนชื่อฟิลด์ตามเงื่อนไข Record.Field จึงเหมาะกว่า

ถ้าไม่เจอ Field จะเกิดอะไรขึ้น?

โปรแกรมจะโยน Error ชื่อ ‘The field … of the record wasn’t found.’ ออกมา ผมเลยแนะนำให้ใช้ try-catch หรือเปลี่ยนมาใช้ Record.FieldOrDefault ถ้าไม่แน่ใจว่าฟิลด์มีหรือไม่

ต่างจาก Record.FieldOrDefault อย่างไร?

Record.Field โยน Error ถ้าฟิลด์หายไป ส่วน Record.FieldOrDefault ส่งกลับค่า null หรือค่าตัวอักษร (default) แทน ผมแนะนำให้ใช้ Record.FieldOrDefault เมื่อข้อมูลมาจากแหล่งที่ไม่แน่ใจว่ามีฟิลด์ครบหรือไม่

สามารถดึง Field หลาย ๆ ตัวพร้อมกันได้ไหม?

ได้แต่ต้องเรียก Record.Field หลายครั้ง ผมแนะนำให้ใช้ Record.ToList ถ้าต้องการค่าทั้งหมด หรือใช้ let…in เพื่อเก็บค่าแต่ละ Field ไว้ตัวแปรแต่ละอัน

Resources & Related

Additional Notes

Record.Field ดึงค่าจากระเบียนเมื่อคุณรู้ชื่อฟิลด์แน่นอน ต่างจาก Record.FieldOrDefault ตรงที่จะโยนข้อผิดพลาดหากฟิลด์หายไป มีประโยชน์มากในงานจริงเมื่อต้องการดึงข้อมูลจาก JSON หรือแปลงข้อมูลจากแหล่งอื่น

ที่เจ๋งคือ Record.Field ยืดหยุ่นที่สุดเพราะรับชื่อฟิลด์เป็นข้อความ (dynamic) ได้ ทำให้คุณสามารถเปลี่ยนชื่อฟิลด์ตามต้องการผ่านตัวแปร แล้วไม่ต้องเขียนโค้ดใหม่ ประโยชน์สูงสุดเมื่อข้อมูลมาจากอินพุตแบบไดนามิก

ส่วนตัวผม Record.Field เป็นตัวช่วยหลักในการตรวจสอบข้อมูลจาก API หรือการรวมข้อมูลจากหลายแหล่ง เหมือนกับการอ้างอิงคนตรงเวลา ทำให้ debug ได้ง่าย

Leave a Reply

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