Thep Excel

CROSSJOIN – สร้างตารางผลคูณคาร์ทีเซียน (Cartesian Product)

สร้างตารางที่มีทุก Combination ของแถวจากตารางที่รวมกัน

CROSSJOIN สร้างตารางใหม่โดยการรวมแถวทั้งหมดจากตารางที่ระบุ โดยสร้างทุก Combination ที่เป็นไปได้ (ทุกแถวจากตารางแรกจับคู่กับทุกแถวจากตารางที่สอง) ผลลัพธ์คือตารางที่มีจำนวนแถวเท่ากับผลคูณของจำนวนแถวของแต่ละตาราง

=CROSSJOIN(Table1, Table2, ...)

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=CROSSJOIN(Table1, Table2, ...)

Argument Type Required Default Description
Table table Yes ตารางที่ต้องการนำมารวมกัน (สามารถระบุได้มากกว่า 1 ตาราง)

How it works

การสร้างตาราง Matrix สำหรับการวิเคราะห์ (What-If Analysis)

เช่น ต้องการสร้างตารางทุก Combination ของ Product และ Scenario (Best/Worst Case) เพื่อวิเคราะห์ผลลัพธ์

การสร้างตารางจำลอง (Simulation Table)

สร้างตารางที่ใช้ในการทดสอบสูตรหรือโมเดลต่างๆ

Examples

ตัวอย่างที่ 1: รวม Product กับ Calendar Year

ถ้ามี 10 สินค้า และ 5 ปี จะได้ตาราง 50 แถว แสดงทุก Combination ของสินค้าและปี
DAX Formula:

Product X Year = CROSSJOIN( VALUES('Product'[ProductName]), VALUES('Date'[CalendarYear]) )

Result:

ตารางที่มีทุกชื่อสินค้าคู่กับทุกปีที่มีข้อมูล

ตัวอย่างที่ 2: หา Combination ที่ไม่มีขาย (Missing Sales)

สร้างตารางที่เป็นไปได้ทั้งหมด (CROSSJOIN) แล้วลบด้วยตารางที่มีขายจริง (SUMMARIZE) เพื่อหาช่องว่าง
DAX Formula:

Missing Combinations = 
EXCEPT(
    CROSSJOIN(VALUES(Store[StoreName]), VALUES(Product[ProductName])),     SUMMARIZE(Sales, Store[StoreName], Product[ProductName]) )

Result:

ตาราง Store และ Product ที่ไม่มียอดขาย

ตัวอย่างที่ 3: สร้างตารางไพ่ (52 ใบ)

รวม 4 ดอก x 13 แต้ม ได้ 52 ใบ
DAX Formula:

Deck of Cards = 
CROSSJOIN(
    DATATABLE("Suit", STRING, {{"Heart"}, {"Diamond"}, {"Spade"}, {"Club"}}),     DATATABLE("Rank", STRING, { {"A"}, {"2"}, {"3"}, {"4"}, {"5"}, {"6"}, {"7"}, {"8"}, {"9"}, {"10"}, {"J"}, {"Q"}, {"K"}}) )

Result:

ตารางไพ่ 52 ใบ

FAQs

CROSSJOIN ต่างจาก NATURALINNERJOIN หรือ NATURALLEFTOUTERJOIN อย่างไร?

CROSSJOIN ไม่สนใจ Relationship หรือคอลัมน์ที่ตรงกัน มันจะสร้างทุก Combination ของแถวทั้งหมด ส่วน NATURAL…JOIN จะรวมตารางโดยอาศัยคอลัมน์ที่ชื่อตรงกัน และความสัมพันธ์

ควรหลีกเลี่ยง CROSSJOIN ตอนไหน?

ควรหลีกเลี่ยงการใช้กับตารางขนาดใหญ่มากๆ เพราะจำนวนแถวจะเพิ่มขึ้นแบบทวีคูณ (เช่น ตาราง A มี 1 ล้านแถว, ตาราง B มี 1 ล้านแถว -> CROSSJOIN จะได้ 1 ล้านล้านแถว) ทำให้ Memory เต็มได้ง่าย

Resources & Related

Additional Notes

CROSSJOIN เป็นฟังก์ชันที่สร้าง ผลคูณคาร์ทีเซียน (Cartesian Product) ของแถวทั้งหมดจากสองตารางหรือมากกว่านั้น ผลลัพธ์คือตารางใหม่ที่มีทุก Combination ที่เป็นไปได้ของแถวจากตารางต้นฉบับ

เช่น ถ้า Table A มี 3 แถว และ Table B มี 4 แถว CROSSJOIN(Table A, Table B) จะได้ตารางใหม่ที่มี 3 x 4 = 12 แถว

Leave a Reply

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