OR ตรวจสอบเงื่อนไขตรรกะ 2 ตัว และคืน TRUE เมื่อมีเงื่อนไขใดเงื่อนไขหนึ่งเป็น TRUE เหมาะกับการทำเงื่อนไขแบบ “อย่างน้อยหนึ่งข้อ” และนิยมเขียนด้วยตัวดำเนินการ || ในงานจริง
=OR(<logical1>, <logical2>)
=OR(<logical1>, <logical2>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| logical1 | boolean | Yes | เงื่อนไขตรรกะตัวแรก (Boolean TRUE/FALSE) | |
| logical2 | boolean | Yes | เงื่อนไขตรรกะตัวที่สอง (Boolean TRUE/FALSE) |
ใช้ OR/|| เพื่อกำหนดว่าถ้าเข้าเงื่อนไขข้อใดข้อหนึ่งให้จัดอยู่ในกลุ่มเดียวกัน
คืนข้อความ/สีเมื่อเข้าเกณฑ์อย่างน้อยหนึ่งข้อ เช่น ยอดขายสูงหรือกำไรสูง
OR(TRUE, FALSE)=OR(TRUE, FALSE)
TRUE
Is Important = ([Total Sales] > 100000) || ([Total Profit] > 0)Is Important =
([Total Sales] > 100000) || ([Total Profit] > 0)
TRUE เมื่อยอดขายสูง หรือกำไรเป็นบวก
Flag = IF( ([Total Sales] > 100000) || ([Total Quantity] > 100), "เด่น", "ปกติ" )Flag =
IF(
([Total Sales] > 100000) || ([Total Quantity] > 100),
"เด่น",
"ปกติ"
)
คืน "เด่น" เมื่อเข้าเกณฑ์ข้อใดข้อหนึ่ง
Highlight Status = IF( (Sales[Status] = "High Priority") || (Sales[Status] = "Urgent") || (Sales[Status] = "Critical"), "ต้องดำเนินการ", "ตามปกติ" )Highlight Status =
IF(
(Sales[Status] = "High Priority") || (Sales[Status] = "Urgent") || (Sales[Status] = "Critical"),
"ต้องดำเนินการ",
"ตามปกติ"
)
คืน "ต้องดำเนินการ" เมื่อสถานะเป็นสถานะด่วนข้อใดข้อหนึ่ง
OR จะคืน TRUE เมื่อมีอย่างน้อยหนึ่งเงื่อนไขเป็น TRUE (เขียน: A || B) ส่วน AND จะคืน TRUE ก็ต่อเมื่อทุกเงื่อนไขเป็น TRUE (เขียน: A && B)
เพราะ || เขียนสั้นกว่า รองรับหลายเงื่อนไขได้โดยไม่ต้องซ้อนฟังก์ชัน และอ่านง่ายกว่าในโค้ดจริง โดยเฉพาะเมื่อซ้อนกับ IF/SWITCH
ฟังก์ชัน OR() รับเพียง 2 argument เท่านั้น ถ้ามี 3 เงื่อนไขขึ้นไปให้ใช้ || ต่อกัน เช่น (A > 100) || (B < 50) || (C = "X")
ใช้ได้ทั้งคู่ โดยไม่ต้องกังวลเรื่อง Filter Context vs Row Context เพราะ OR เป็นฟังก์ชันตรรกะธรรมดา ไม่เปลี่ยนแปลง Context
OR เป็นฟังก์ชันตรรกะสำหรับตรวจสอบเงื่อนไข 2 ตัว ถ้ามีอย่างน้อย 1 เงื่อนไขเป็นจริงจะคืนค่า TRUE และจะคืนค่า FALSE ก็ต่อเมื่อทั้งสองเงื่อนไขเป็น FALSE เท่านั้น
ในงานจริง มักใช้ตัวดำเนินการ || แทน OR() เพราะเขียนได้สั้นกว่า รองรับหลายเงื่อนไข และอ่านง่ายกว่า โดยเฉพาะเมื่อใช้ร่วมกับ IF หรือ SWITCH
ส่วนตัวผม คิดว่า OR/|| เป็นฟังก์ชันตรรกะพื้นฐานที่ต้องเข้าใจให้ลึก เพราะเมื่อเขียน DAX ที่ซับซ้อน บ่อยครั้งที่เราต้องตัดสินใจว่าเงื่อนไขควรเป็น AND หรือ OR กันแน่ – การเลือกผิดจะทำให้ผลลัพธ์ผิดไปเลย