Thep Excel

DATATABLE – สร้างตารางจากข้อมูลที่ระบุเอง (Inline)

DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง

=DATATABLE(<Name>, <DataType>, [<Name>, <DataType>, ...], <Data>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
5/10

Syntax & Arguments

=DATATABLE(<Name>, <DataType>, [<Name>, <DataType>, ...], <Data>)

Argument Type Required Default Description
Name text Yes ชื่อคอลัมน์ (ระบุเป็นข้อความ) สามารถระบุได้หลายคอลัมน์ โดยสลับกับ DataType
DataType datatype Yes ชนิดข้อมูลของคอลัมน์ (BOOLEAN/LOGICAL, CURRENCY/DECIMAL, DATETIME, DOUBLE, INTEGER/INT64, STRING/TEXT)
Data constant table Yes ชุดข้อมูลในรูปแบบ nested constant {{ {row1 values}, {row2 values}, … }} ต้องเป็นค่าคงที่เท่านั้น ห้ามใช้ expressions หรือการอ้างอิงคอลัมน์

How it works

สร้างตาราง mapping ขนาดเล็ก

เช่น mapping ของระดับ/กลุ่ม เพื่อใช้เป็นตัวช่วยในการจำแนกหรือทำตัวเลือก

สร้างข้อมูลตัวอย่างเพื่อทดสอบสูตร

เช่น ตาราง 2-10 แถว เพื่อทดสอบการคำนวณก่อนใช้กับข้อมูลจริง

Examples

ตัวอย่างที่ 1: สร้างตารางสถานะ (Status Lookup)
Status Table = DATATABLE( "StatusID", INTEGER, "StatusName", STRING, { { 1, "New" }, { 2, "In Progress" }, { 3, "Completed" }, { 4, "Cancelled" } } )
สร้างตารางอ้างอิงสำหรับแปลงรหัสสถานะเป็นชื่ออธิบาย ใช้ LOOKUPVALUE เพื่อจับคู่กับข้อมูลหลัก
DAX Formula:

Status Table =
DATATABLE(
    "StatusID", INTEGER,
    "StatusName", STRING,
    {
        { 1, "New" },
        { 2, "In Progress" },
        { 3, "Completed" },
        { 4, "Cancelled" }
    }
)

Result:

ตาราง 4 แถว 2 คอลัมน์: StatusID (เลข) กับ StatusName (ข้อความ)

ตัวอย่างที่ 2: ตารางอัตราภาษีหลายประเภท
Tax Rates = DATATABLE( "TaxType", STRING, "Rate", DOUBLE, { { "VAT Standard", 0.07 }, { "VAT Reduced", 0.03 }, { "Service Fee", 0.10 }, { "Import Duty", 0.20 }…
ตารางอ้างอิงสำหรับการคำนวณค่าเพิ่มเติม เช่น ภาษี ค่าบริการ สามารถ LOOKUP ตามประเภทและเอาอัตรามาคูณยอด
DAX Formula:

Tax Rates =
DATATABLE(
    "TaxType", STRING,
    "Rate", DOUBLE,
    {
        { "VAT Standard", 0.07 },
        { "VAT Reduced", 0.03 },
        { "Service Fee", 0.10 },
        { "Import Duty", 0.20 }
    }
)

Result:

ตาราง 4 แถว 2 คอลัมน์ โดยอัตราเป็นทศนิยม

ตัวอย่างที่ 3: ตารางข้อมูลหลายคอลัมน์ (Product Category Mapping)
VAR CategoryTable = DATATABLE( "CategoryCode", STRING, "CategoryName", STRING, "DiscountPct", DOUBLE, { { "ELEC", "Electronics", 0.05 }, { "FOOD", "Food & Bever…
ตัวอย่างการใช้ VAR เพื่อจัดเก็บ DATATABLE ที่สร้างขึ้น จากนั้นใช้ LOOKUPVALUE หรือ FILTER เพื่อดึงข้อมูลตามเงื่อนไข
DAX Formula:

VAR CategoryTable =
DATATABLE(
    "CategoryCode", STRING,
    "CategoryName", STRING,
    "DiscountPct", DOUBLE,
    {
        { "ELEC", "Electronics", 0.05 },
        { "FOOD", "Food & Beverage", 0.02 },
        { "FURN", "Furniture", 0.10 },
        { "BOOK", "Books", 0.00 }
    }
)
RETURN CategoryTable

Result:

ตาราง 4 แถว 3 คอลัมน์: รหัส ชื่อ และส่วนลดสำหรับแต่ละประเภท

ตัวอย่างที่ 4: ตารางวันที่และเวลาตัวอย่าง
Sample Dates = DATATABLE( "Date", DATETIME, "Month", STRING, { { DATE(2025, 1, 1), "January" }, { DATE(2025, 2, 1), "February" }, { DATE(2025, 3, 1), "March" },…
ใช้สำหรับทดสอบสูตรเกี่ยวกับวันที่ เช่น การ GROUP BY เดือน หรือตรวจสอบพฤติกรรมกับข้อมูลวันที่ที่เรารู้ผลลัพธ์ที่คาดหวัง
DAX Formula:

Sample Dates =
DATATABLE(
    "Date", DATETIME,
    "Month", STRING,
    {
        { DATE(2025, 1, 1), "January" },
        { DATE(2025, 2, 1), "February" },
        { DATE(2025, 3, 1), "March" },
        { DATE(2025, 12, 1), "December" }
    }
)

Result:

ตาราง 4 แถว 2 คอลัมน์ พร้อมวันที่และชื่อเดือน

FAQs

DATATABLE ต่างจาก Table Constructor {} อย่างไร?

DATATABLE ต้องระบุชื่อคอลัมน์และชนิดข้อมูลอย่างชัดเจน และรองรับฟังก์ชันเช่น DATE(), BLANK() ส่วน Table Constructor {} สร้างตารางตรงจากโครงสร้างข้อมูลโดยไม่ต้องระบุชนิดข้อมูล แต่รองรับ expressions มากกว่า ผมแนะนำว่า DATATABLE ดีสำหรับตารางอ้างอิงที่ต้องชนิดข้อมูลชัดเจน

DATATABLE รองรับการอ้างอิงคอลัมน์อื่นไหม?

ไม่รองรับ DATATABLE ต้องเป็นค่าคงที่เท่านั้น ห้ามใช้ expressions, column references, หรือการอ้างอิงตาราง ถ้าต้องการข้อมูลแบบไดนามิก ต้องใช้ ROW(), UNION(), หรือ Table Constructor {} แทน

DATATABLE ใช้ได้ในตัวไหนบ้าง (Calculated Column, Measure, Table)?

DATATABLE ใช้ได้ในทั้ง Calculated Table, Calculated Column (ต้องระบุในเซลล์เดียว), และ Measure โดยทั่วไป เขามักนำไปใช้ใน Calculated Table เพื่อสร้างตารางอ้างอิง

ถ้าข้อมูลใน Data ไม่ตรงกับจำนวนคอลัมน์ จะเกิดอะไร?

จะมี error เพราะระบบต้องการให้จำนวนค่าในแต่ละแถวตรงกับจำนวนคอลัมน์ที่ระบุ ต้องตรวจสอบให้แน่ใจว่า { {val1, val2, …}, … } มีค่าตามจำนวนคอลัมน์ที่ประกาศไว้

DATATABLE ใช้เพื่อสร้างตารางขนาดใหญ่ได้ไหม?

ไม่ แนะนำให้ใช้สำหรับตารางเล็กๆ เท่านั้น (ปกติ < 100 แถว) ถ้าข้อมูลมีขนาดใหญ่หรือเปลี่ยนแปลงบ่อย ควรนำเข้าจากแหล่งข้อมูลจริงหรือใช้ Power Query ปมนี้คือ hardcode ข้อมูลใน DAX จะทำให้ model ใหญ่ขึ้น และ maintain ยากเวลาข้อมูลต้องเปลี่ยน

Resources & Related

Additional Notes

DATATABLE เป็นเครื่องมือที่ดีสำหรับสร้างตารางง่ายๆ ภายในสูตร DAX โดยคุณระบุชื่อคอลัมน์พร้อมชนิดข้อมูล แล้วตามด้วยข้อมูลจริงในรูปแบบแถว (rows) สิ่งที่ดีคือ DATATABLE ยึดกับค่าคงที่เท่านั้น ไม่รองรับการอ้างอิงคอลัมน์หรือมีการคำนวณ ซึ่งถ้าต้องการเอา ตัวแปรหรือผลลัพธ์จากคอลัมน์อื่นเข้าไป ต้องใช้วิธีอื่น เช่น ROW() หรือตัวสร้างตาราง {} แทน

ที่เจ๋งคือ DATATABLE ช่วยให้คุณจัดการ mapping table ได้ดี เช่น ตารางแปลงรหัสสถานะ ตารางอัตรา หรือแม้แต่ข้อมูลตัวอย่างเพื่อทดสอบสูตร โดยไม่ต้องอ้างอิงตารางภายนอก เขียนได้เรียบร้อยในพื้นที่เดียว คำ syntax ก็ชัดเจน

ส่วนตัวผมมองว่า DATATABLE มีประโยชน์มากสำหรับโปรเจกต์เริ่มต้นหรือตารางที่เปลี่ยนแปลงน้อย แต่ถ้าข้อมูล hardcode ขึ้นมา จะต้องตันเมื่อต้องการปรับข้อมูลเอง เลยแนะนำว่า ถ้าข้อมูลเปลี่ยนบ่อยๆ ควรนำเข้าจากแหล่งข้อมูลจริงหรือสร้าง Power Query table แทน ตัวนี้ใช้สำหรับอ้างอิง referential data ที่มั่นคงที่สุด

Leave a Reply

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