Thep Excel

Table.Combineรวมหลาย table เข้าด้วยกัน

Table.Combine ใช้สำหรับรวม list ของ table เข้าเป็น table เดียว ยับยั้ง append ตัว 1 แถวหลาย ๆ ตารางพร้อมกัน

fx
=Table.Combine(tables, [columns]) as table

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
tables list List ของ tables ที่ต้องการรวมกัน เช่น {Table1, Table2, Table3}
[columns]ไม่บังคับ any null Optional – ระบุ column structure ของ result table หรือใช้ union ของทุก column จาก input tables

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

Table.Combine รวม list ของ table เข้าเป็น table เดียว โดยแล้ว schema จากทุก table เข้าด้วยกัน ถ้ามี column ที่อยู่ใน table บางตัวแต่ไม่อยู่ในตัวอื่น จะเติม null ลงไปอัตโนมัติ

ที่เจ๋งคือมันทำให้เวลาต้อง append table หลาย ตัว ไม่ต้องเขียน Table.ExpandRecords สองครั้ง หรือ chain query ยาว ๆ ได้

ส่วนตัวผม มักใช้ Table.Combine เวลาต้องรวมข้อมูลจากหลาย worksheet หรือหลาย API endpoint ที่ structure มันต่างกัน ทำให้ combine ได้ง่ายขึ้นเยอะครับ 😎

Examples

รวม 3 tables ที่มี structure เหมือนกันlet Table1 = Table.FromRecords({ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] }), Table2 = Table.FromR…

รวม 3 tables เข้าเป็น table เดียว 4 แถว ทุก column เหมือนกันเลยใช้ได้เลย

fx
= let
Table1 = Table.FromRecords({
[CustomerID = 1, Name = "Bob", Phone = "123-4567"],
[CustomerID = 2, Name = "Jim", Phone = "987-6543"]
}),
Table2 = Table.FromRecords({
[CustomerID = 3, Name = "Paul", Phone = "543-7890"]
}),
Table3 = Table.FromRecords({
[CustomerID = 4, Name = "Alice", Phone = "246-1357"]
}),
Combined = Table.Combine({Table1, Table2, Table3})
in
Combined

ผลลัพธ์Table with 4 rows:
[CustomerID = 1, Name = "Bob", Phone = "123-4567"]
[CustomerID = 2, Name = "Jim", Phone = "987-6543"]
[CustomerID = 3, Name = "Paul", Phone = "543-7890"]
[CustomerID = 4, Name = "Alice", Phone = "246-1357"]
รวม tables ที่มี structure ต่างกัน (column อื่น)let ContactsEmail = Table.FromRecords({ [Name = "Bob", Email = "bob@company.com"], [Name = "Jim", Email = "jim@company.com"] }), ContactsPhone = Table.FromRecor…

รวม tables ที่มี columns ต่างกัน มันจะทำ union ของ columns ทั้งหมด แล้วเติม null ให้ column ที่ขาดหาย

fx
= let
ContactsEmail = Table.FromRecords({
[Name = "Bob", Email = "bob@company.com"],
[Name = "Jim", Email = "jim@company.com"]
}),
ContactsPhone = Table.FromRecords({
[Name = "Paul", Phone = "543-7890"],
[Name = "Alice", Phone = "246-1357"]
}),
AllContacts = Table.FromRecords({
[Name = "Charlie", Email = "charlie@company.com", Phone = "135-7924"]
}),
Combined = Table.Combine({ContactsEmail, ContactsPhone, AllContacts})
in
Combined

ผลลัพธ์Table with 5 rows and 3 columns (Name, Email, Phone):
[Name = "Bob", Email = "bob@company.com", Phone = null]
[Name = "Jim", Email = "jim@company.com", Phone = null]
[Name = "Paul", Email = null, Phone = "543-7890"]
[Name = "Alice", Email = null, Phone = "246-1357"]
[Name = "Charlie", Email = "charlie@company.com", Phone = "135-7924"]
ระบุ column structure อย่างชัดเจนlet Sales2024 = Table.FromRecords({ [Region = "North", Amount = 1000, Year = 2024], [Region = "South", Amount = 1500, Year = 2024] }), Sales2025 = Table.FromRec…

ระบุ column ที่ต้องการใน parameter ที่สอง ถ้า table source มี column อื่นมากมาย มันจะเลือกแค่ column ที่ระบุ

fx
= let
Sales2024 = Table.FromRecords({
[Region = "North", Amount = 1000, Year = 2024],
[Region = "South", Amount = 1500, Year = 2024]
}),
Sales2025 = Table.FromRecords({
[Region = "East", Amount = 2000, Year = 2025],
[Region = "West", Amount = 1800, Year = 2025]
}),
AllSales = Table.Combine(
{Sales2024, Sales2025},
{"Region", "Amount", "Year"}
)
in
AllSales

ผลลัพธ์Table with 4 rows:
[Region = "North", Amount = 1000, Year = 2024]
[Region = "South", Amount = 1500, Year = 2024]
[Region = "East", Amount = 2000, Year = 2025]
[Region = "West", Amount = 1800, Year = 2025]
รวม tables จาก multiple sources (real-world)let NorthRegionData = Table.FromRecords({ [Store = "A", Sales = 5000, Staff = 10], [Store = "B", Sales = 7000, Staff = 15] }), SouthRegionData = Table.FromRecor…

รวม data จากหลาย region (3 tables) แล้วเพิ่ม column Region ด้วย Table.AddColumn ตอนจบ ทำให้ได้ complete dataset

fx
= let
NorthRegionData = Table.FromRecords({
[Store = "A", Sales = 5000, Staff = 10],
[Store = "B", Sales = 7000, Staff = 15]
}),
SouthRegionData = Table.FromRecords({
[Store = "C", Sales = 4500, Staff = 8],
[Store = "D", Sales = 6000, Staff = 12]
}),
EastRegionData = Table.FromRecords({
[Store = "E", Sales = 5500, Staff = 11]
}),
AllStores = Table.Combine({NorthRegionData, SouthRegionData, EastRegionData}),
WithRegion = Table.AddColumn(
AllStores,
"Region",
each if [Store] = "A" or [Store] = "B" then "North"
else if [Store] = "C" or [Store] = "D" then "South"
else "East"
)
in
WithRegion

ผลลัพธ์Table with 5 rows and 4 columns (Store, Sales, Staff, Region):
[Store = "A", Sales = 5000, Staff = 10, Region = "North"]
[Store = "B", Sales = 7000, Staff = 15, Region = "North"]
[Store = "C", Sales = 4500, Staff = 8, Region = "South"]
[Store = "D", Sales = 6000, Staff = 12, Region = "South"]
[Store = "E", Sales = 5500, Staff = 11, Region = "East"]
รวม tables แล้ว filter ผลลัพธ์let Q1Sales = Table.FromRecords({ [Month = "Jan", Amount = 1200], [Month = "Feb", Amount = 1500], [Month = "Mar", Amount = 1800] }), Q2Sales = Table.FromRecords…

รวม tables แล้วใช้ Table.SelectRows เพื่อ filter เฉพาะ sales >= 1800

fx
= let
Q1Sales = Table.FromRecords({
[Month = "Jan", Amount = 1200],
[Month = "Feb", Amount = 1500],
[Month = "Mar", Amount = 1800]
}),
Q2Sales = Table.FromRecords({
[Month = "Apr", Amount = 2000],
[Month = "May", Amount = 1900],
[Month = "Jun", Amount = 2200]
}),
AllSales = Table.Combine({Q1Sales, Q2Sales}),
LargeSales = Table.SelectRows(AllSales, each [Amount] >= 1800)
in
LargeSales

ผลลัพธ์Table with 4 rows:
[Month = "Mar", Amount = 1800]
[Month = "Apr", Amount = 2000]
[Month = "May", Amount = 1900]
[Month = "Jun", Amount = 2200]

FAQs

ส่วนต่างคืออะไร ระหว่าง Table.Combine กับ Table.Append?+

Table.Append รวม 2 tables เพียงอย่างเดียว ส่วน Table.Combine รวม list ของ tables ได้ กดหลาย ๆ ตัวพร้อมกัน ถ้ามี tables มาก ๆ Table.Combine จะเขียนสั้นกว่า

ถ้า tables มี column ต่างกันเลยจะเกิดอะไร?+

มันจะทำ union ของ columns ทั้งหมด และเติม null ลงไปให้ column ที่ขาด ตัวอย่าง Table A มี [Name, Email] แต่ Table B มี [Name, Phone] ผลลัพธ์จะมี [Name, Email, Phone] โดย Email ใน rows จาก B จะเป็น null

มี column ที่ไม่ต้องการในผลลัพธ์ทำไงดี?+

ส่ง list ของ column names ในพารามิเตอร์ที่สอง เช่น Table.Combine({T1, T2}, {"Name", "Amount"}) มันจะเลือกแค่ 2 columns นี้

ถ้า tables เป็น empty จะเกิดอะไร?+

ถ้า list ว่าง {} จะได้ error ถ้า table บางตัวว่าง มันก็จะรวมแต่ตัวที่มีข้อมูล ผลลัพธ์อาจเป็น empty table หรือมีแถวได้

ถ้าต้องรวม 100 tables พร้อมกันได้ไหม?+

ได้ แต่ต้องใช้ List ของ tables เช่น Table.Combine(List.Generate(…)) หรือ append query references ลงใน list ก่อน

Resources & Related

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

ฟังก์ชันนี้Table.CombineTable functions
Table functions (9)
Table.AddColumn

Table.AddColumn เพิ่มคอลัมน์ใหม่ลงในตารางโดยคำนวณค่าจากฟังก์ชันที่กำหนด ใช้คำสั่ง each เพื่ออ้างอิงข้อมูลในแต่ละแถว เช่น each [Price] * [Quantity] สามารถระบุชนิดข้อมูลได้เพื่อเพิ่มประสิทธิภาพและป้องกันข้อผิดพลาดจากการคาดเดาชนิดข้อมูล ทำงานแบบทีละแถวและเหมาะสำหรับสร้างคอลัมน์คำนวณ รวมข้อมูล ใช้เงื่อนไข และการแปลงข้อมูลต่างๆ ใช้ร่วมกับฟังก์ชัน Table.TransformColumns สำหรับแก้ไขคอลัมน์เดิม Table.AddIndexColumn สำหรับเพิ่มหมายเลขลำดับ Table.SelectRows สำหรับกรองแถว Table.FromRecords สำหรับสร้างตารางจากข้อมูล Text.Combine สำหรับรวมข้อความ Number.Round สำหรับปัดเศษ Date.Year สำหรับดึงค่าปี และ Text.Upper สำหรับแปลงเป็นตัวพิมพ์ใหญ่ เพื่อสร้างกระบวนการแปลงข้อมูลที่สมบูรณ์

Table.Buffer

Table.Buffer บังคับโหลดตารางลงหน่วยความจำและแยกออกจากแหล่งข้อมูลต้นทาง ช่วยป้องกันการ fold และควบคุมเวลาประมวลผล

Table.FillUp

Table.FillUp เติมเต็มค่าว่าง (null) ด้วยค่าจากแถวด้านล่างขึ้นไป ทำงานตรงกันข้ามกับ FillDown ใช้สำหรับจัดการข้อมูลที่ค่าสรุปอยู่ล่างสุด

Table.FromRecords

แปลง List ของ Record เป็นตาราง โดยแต่ละ Record กลายเป็นหนึ่งแถว เหมาะสำหรับข้อมูลจาก API หรือ JSON

Table.Join

Table.Join ใช้รวมตารางสองตารางโดยจับคู่ค่าในคอลัมน์กำหนด สนับสนุนทุกประเภท join (Inner, Left Outer, Right Outer, Full Outer, Anti, Semi) เหมือน SQL Join

Table.NestedJoin

Table.NestedJoin เชื่อมตารางสองตารางด้วยคีย์ที่กำหนด และสร้างคอลัมน์ใหม่ที่เก็บตารางย่อยของแถวที่จับคู่ได้ เหมาะกับงาน Merge ที่ต้องการเก็บรายละเอียดฝั่งขวาไว้เป็น nested table ก่อนจะ Expand หรือทำขั้นตอนต่อ

Table.RowCount

ฟังก์ชันสำหรับนับจำนวนแถวทั้งหมดในตาราง โดยคืนค่าเป็นตัวเลขครับ

Table.SelectRows

Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่

Table.TransformColumnTypes

Table.TransformColumnTypes เปลี่ยน Data Type ของคอลัมน์ที่ระบุให้เป็นประเภทใหม่ (เช่น Text เป็น Number, Date เป็น Text) โดยใช้ built-in conversion methods เบื้องหลัง รองรับการแปลงหลายคอลัมน์พร้อมกัน และสามารถระบุ culture parameter เพื่อจัดการ locale-specific formatting สำหรับวันที่และตัวเลข เหมาะสำหรับขั้นตอนเตรียมข้อมูลก่อน Load เข้า Data Model เพื่อป้องกัน conversion errors และเพิ่มประสิทธิภาพ ใช้ร่วมกับ Table.TransformColumns, Number.From, Text.From และ Date.From เมื่อต้องการ custom transformation logic

Accessing data functions (1)
DeltaLake.Table

DeltaLake.Table ใช้ดึงข้อมูลจากตาราง Delta Lake โดยระบุที่อยู่ไดเรกทอรี่ของตาราง เหมาะสำหรับเชื่อมต่อกับ Data Lake หรือ Microsoft Fabric

Comments

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