Thep Excel

CROSSFILTER – กำหนดทิศทางการกรองข้ามความสัมพันธ์ชั่วคราว

CROSSFILTER กำหนดทิศทางการกรองข้ามความสัมพันธ์ระหว่าง 2 คอลัมน์ชั่วคราว (มักใช้ใน CALCULATE) เพื่อควบคุมการไหลของตัวกรองหรือปิดการกรองข้ามในบางการคำนวณ

=CROSSFILTER(<LeftColumnName>, <RightColumnName>, <CrossFilterType>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
5/10

Difficulty
5/10

Usefulness
5/10

Syntax & Arguments

=CROSSFILTER(<LeftColumnName>, <RightColumnName>, <CrossFilterType>)

Argument Type Required Default Description
LeftColumnName column Yes คอลัมน์ฝั่งซ้ายของความสัมพันธ์ (ปลายทางหนึ่งของความสัมพันธ์)
RightColumnName column Yes คอลัมน์ฝั่งขวาของความสัมพันธ์ (ปลายทางอีกฝั่งหนึ่งของความสัมพันธ์)
CrossFilterType text/number Yes ชนิดทิศทางการกรอง เช่น None, OneWay, Both, OneWay_RightFiltersLeft, OneWay_LeftFiltersRight (หรือใช้รหัส 0–4)

How it works

ปิดการกรองข้ามชั่วคราว

เช่น ต้องการคำนวณที่ไม่ให้ตัวกรองไหลผ่านความสัมพันธ์บางเส้น

เปลี่ยนทิศทางการกรองให้เหมาะกับการคำนวณ

เช่น ทำให้ตัวกรองไหลสองทางเฉพาะในมาตรวัดบางตัว

Examples

ตัวอย่างที่ 1: ปิดการกรองข้ามของความสัมพันธ์ (None)
Sales (ปิดการกรองข้าม) = CALCULATE( [Sales Amount], CROSSFILTER( Sales[ProductID], Products[ProductID], None ) )
ใช้ CROSSFILTER กับ None เพื่อไม่ให้ตัวกรองไหลผ่านความสัมพันธ์นี้ขณะประเมินมาตรวัด
DAX Formula:

=Sales (ปิดการกรองข้าม) =
CALCULATE(
    [Sales Amount],
    CROSSFILTER(
        Sales[ProductID],
        Products[ProductID],
        None
    )
)

Result:

คำนวณภายใต้การปิดการกรองข้ามของความสัมพันธ์ที่ระบุ

ตัวอย่างที่ 2: เปิดการกรองสองทางชั่วคราว (Both)
Sales (Both Directions) = CALCULATE( [Sales Amount], CROSSFILTER( Sales[ProductID], Products[ProductID], Both ) )
ใช้ Both เพื่อให้ตัวกรองไหลได้สองทางเฉพาะในมาตรวัดนี้ (ระวังผลกระทบต่อโมเดลและความหมายของการคำนวณ)
DAX Formula:

=Sales (Both Directions) =
CALCULATE(
    [Sales Amount],
    CROSSFILTER(
        Sales[ProductID],
        Products[ProductID],
        Both
    )
)

Result:

คำนวณภายใต้การกรองสองทางของความสัมพันธ์ที่ระบุ

ตัวอย่างที่ 3: กำหนดทิศทางแบบเฉพาะทาง (OneWay_LeftFiltersRight)
Sales (Left to Right) = CALCULATE( [Sales Amount], CROSSFILTER( Products[ProductID], Sales[ProductID], OneWay_LeftFiltersRight ) )
ใช้ CrossFilterType แบบ OneWay_* เพื่อควบคุมทิศทางให้ชัดเจนเมื่อมีกรณีที่ต้องบังคับการไหลของตัวกรอง
DAX Formula:

=Sales (Left to Right) =
CALCULATE(
    [Sales Amount],
    CROSSFILTER(
        Products[ProductID],
        Sales[ProductID],
        OneWay_LeftFiltersRight
    )
)

Result:

กำหนดให้ตัวกรองไหลจากซ้ายไปขวาตามที่ระบุ

FAQs

CROSSFILTER ใช้ได้ที่ไหนบ่อยที่สุด?

มักใช้ภายใน CALCULATE เพื่อปรับทิศทางการกรองข้ามความสัมพันธ์ชั่วคราวสำหรับการคำนวณนั้น ๆ

CROSSFILTER ต่างจาก USERELATIONSHIP อย่างไร?

USERELATIONSHIP ใช้เปิดความสัมพันธ์ที่ไม่ active ชั่วคราว ส่วน CROSSFILTER ใช้เปลี่ยนทิศทาง/ปิดการกรองข้ามของความสัมพันธ์ที่ระบุชั่วคราว

Resources & Related

Additional Notes

CROSSFILTER ใช้กำหนดทิศทางการกรองข้ามความสัมพันธ์ระหว่าง 2 ตาราง “ชั่วคราว” เฉพาะตอนประเมินนิพจน์ (มักใช้ภายใน CALCULATE) เพื่อควบคุมว่า ตัวกรองจะไหลจากตารางไหนไปตารางไหน หรือปิดการกรองข้ามไปเลย เหมาะกับโมเดลที่มีความสัมพันธ์หลายทาง หรือมีความสัมพันธ์แบบทางเดียว แต่ต้องการเปลี่ยนทิศทางสำหรับการคำนวณบางตัว

Leave a Reply

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