Thep Excel

TREATAS – ใช้ตารางเป็นตัวกรองอีกตาราง

ใช้ตาราง/คอลัมน์เป็นตัวกรองสำหรับคอลัมน์อื่นที่ไม่ได้เกี่ยวข้องกัน

TREATAS ใช้ตารางหรือคอลัมน์หนึ่งเป็นตัวกรองสำหรับคอลัมน์ในตารางอื่น โดยไม่ต้องมี Relationship ที่ Active ฟังก์ชันนี้มีประโยชน์ในการสร้าง Virtual Relationship หรือการประยุกต์ใช้ Filter Context จากตารางที่ไม่เกี่ยวข้องกัน

=TREATAS(Table_Expression, Column_to_Filter1, [Column_to_Filter2]...)

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=TREATAS(Table_Expression, Column_to_Filter1, [Column_to_Filter2]...)

Argument Type Required Default Description
Table_Expression table Yes ตารางหรือนิพจน์ที่คืนค่าเป็นตาราง (เช่น VALUES(Product[Color])) ใช้เป็น Source ของตัวกรอง
Column_to_Filter column Yes คอลัมน์ในตารางเป้าหมายที่ต้องการให้ถูกกรองด้วย Table_Expression

How it works

กรองข้อมูลข้ามตารางที่ไม่มี Relationship

เช่น มีตารางยอดขายและตารางงบประมาณที่ไม่มี Relationship กัน แต่ต้องการกรองงบประมาณตามรหัสสินค้าที่เลือกในยอดขาย

การนำ Filter ไปใช้กับหลายคอลัมน์

สามารถระบุคอลัมน์เป้าหมายได้หลายคอลัมน์ ทำให้ Filter ถูกส่งไปพร้อมกันหลายตัว

Examples

ตัวอย่างที่ 1: กรองยอดขายตามหมวดหมู่ที่ไม่เกี่ยวกัน

สมมติว่า 'Product Lookup' เป็นตารางแยกออกมาไม่มี Relationship กับ Sales เราใช้ TREATAS เพื่อให้ Filter จาก 'Product Lookup'[Category] ไปกรอง Sales[ProductCategory]
DAX Formula:

Sales by Selected Category = 
CALCULATE( 
    [Total Sales], 
    TREATAS( VALUES('Product Lookup'[Category]), Sales[ProductCategory] ) 
)

Result:

ยอดขายเฉพาะหมวดหมู่สินค้าที่เลือกจาก Slicer 'Product Lookup'

ตัวอย่างที่ 2: เชื่อมต่อ Date Table กับ 2 คอลัมน์ (Start/End)

ใช้ TREATAS เพื่อส่ง Filter วันที่ไปกรองที่คอลัมน์ StartDate โดยไม่ต้องสร้าง Relationship จริง
DAX Formula:

Active Projects = 
CALCULATE(
    COUNTROWS(Projects),
    TREATAS( VALUES('Date'[Date]), Projects[StartDate] )
)

Result:

จำนวนโปรเจกต์ที่เริ่มในวันที่เลือก

ตัวอย่างที่ 3: กรองหลายคอลัมน์พร้อมกัน (Year & Month)

ส่ง Filter ของ Year และ Month จาก Date Table ไปกรอง Year และ Month ของตาราง Budget พร้อมกัน
DAX Formula:

Budget Match = 
CALCULATE(
    SUM(Budget[Amount]),
    TREATAS(
        SUMMARIZE('Date', 'Date'[Year], 'Date'[Month]),
        Budget[Year], Budget[Month]     ) )

Result:

งบประมาณที่ตรงกับปีและเดือนที่เลือก

FAQs

TREATAS ใช้แทน USERELATIONSHIP ได้ไหม?

ไม่เชิง TREATAS ใช้กับตารางที่ไม่เกี่ยวกัน ส่วน USERELATIONSHIP ใช้กับความสัมพันธ์ที่ Inactive แต่มีอยู่จริงใน Model

TREATAS กับ CROSSFILTER ต่างกันอย่างไร?

CROSSFILTER ใช้เปลี่ยนทิศทางของ Relationship ที่มีอยู่ ส่วน TREATAS ใช้สร้าง Virtual Relationship ชั่วคราวเพื่อส่ง Filter ข้ามตารางที่ไม่เกี่ยวกัน

Resources & Related

Additional Notes

TREATAS เป็นฟังก์ชันที่ช่วยให้เราสามารถนำ ตาราง (Table Expression) หรือ คอลัมน์ (Column) มาใช้เป็นตัวกรองให้กับคอลัมน์ในตารางอื่นได้ แม้ว่าตารางเหล่านั้นจะไม่มีความสัมพันธ์ (Relationship) กันโดยตรงใน Data Model

ฟังก์ชันนี้ทำงานโดยการ “แกล้งทำเป็นว่า” คอลัมน์ที่กำหนดมี Relationship กับตารางที่ใช้เป็นตัวกรองชั่วคราว ทำให้การส่งผ่าน Filter Context ข้ามตารางสามารถทำได้

Leave a Reply

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