Thep Excel

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

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

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

ความนิยม6/10
ความยาก3/10
ประโยชน์6/10

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
record record Record ที่ต้องการดึงค่า
field text ชื่อ Field ที่ต้องการดึงค่า (เป็น Text)

Additional Notes

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

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

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

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

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

ผลลัพธ์"Bob"
ตัวอย่างที่ 2: ใช้ชื่อ Field ภาษาไทยRecord.Field([ชื่อ = "สมชาย", อายุ = 30], "ชื่อ")

รองรับชื่อ Field ภาษาไทยได้ไม่มีปัญหา ส่วนตัวผมใช้เป็นประจำทำให้รหัสอ่านเข้าใจง่ายขึ้น

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

ผลลัพธ์"สมชาย"
ตัวอย่างที่ 3: การดึงค่าแบบ Dynamiclet Source = [A=10, B=20, C=30], TargetField = "B", Result = Record.Field(Source, TargetField) in Result

ใช้ตัวแปร TargetField เก็บชื่อ Field ที่ต้องการดึงค่า ทำให้สามารถเปลี่ยนชื่อ Field ได้ตามต้องการ (Dynamic) นี่คือจุดเด่นหลักของ Record.Field

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

ผลลัพธ์20
ตัวอย่างที่ 4: ใช้กับ JSON Datalet JsonData = Json.Document("{\"id\": 101, \"status\": \"Active\"}"), Status = Record.Field(JsonData, "status") in Status

เมื่อ JSON ถูก Parse เป็น Record จะได้ข้อมูลที่เป็น Field ต่างๆ Record.Field ช่วยดึงค่าจาก Field ที่กำหนดออกมาได้สะดวก

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

ผลลัพธ์"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

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

ฟังก์ชันนี้Record.FieldRecord functions
Record functions (8)
Record.AddField

Adds a new field with a specified name and value to a record | เพิ่มฟิลด์ใหม่พร้อมชื่อและค่าเข้าไปใน Record

Record.FieldCount

นับจำนวน Field ทั้งหมดใน Record

Record.FieldNames

ฟังก์ชันสำหรับดึงรายชื่อ Field ทั้งหมดจาก Record และคืนค่าเป็น List ของ Text

Record.FieldOrDefault

ดึงค่าจาก Record ถ้าไม่เจอให้คืนค่า Default

Record.FieldValues

คืนค่าข้อมูล (Values) ทั้งหมดจาก Record เป็น List

Record.HasFields

ตรวจสอบว่า Record มี Field ที่ระบุหรือไม่

Record.RemoveFields

Removes specified fields from a record | ลบฟิลด์ที่ระบุออกจาก Record

Record.SelectFields

Record.SelectFields จะคืนค่า Record ใหม่ที่มีเฉพาะ Field ที่ระบุใน List เท่านั้น สามารถจัดการกับ Field ที่หายไปได้ด้วย option missingField

Comments

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