Thep Excel

ORตรวจสอบว่ามีเงื่อนไขใดเป็นจริง

OR ตรวจสอบเงื่อนไขตรรกะ 2 ตัว และคืน TRUE เมื่อมีเงื่อนไขใดเงื่อนไขหนึ่งเป็น TRUE เหมาะกับการทำเงื่อนไขแบบ “อย่างน้อยหนึ่งข้อ” และนิยมเขียนด้วยตัวดำเนินการ || ในงานจริง

fx
=OR(<logical1>, <logical2>)

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
logical1 boolean เงื่อนไขตรรกะตัวแรก (Boolean TRUE/FALSE)
logical2 boolean เงื่อนไขตรรกะตัวที่สอง (Boolean TRUE/FALSE)

Additional Notes

OR เป็นฟังก์ชันตรรกะสำหรับตรวจสอบเงื่อนไข 2 ตัว ถ้ามีอย่างน้อย 1 เงื่อนไขเป็นจริงจะคืนค่า TRUE และจะคืนค่า FALSE ก็ต่อเมื่อทั้งสองเงื่อนไขเป็น FALSE เท่านั้น

ในงานจริง มักใช้ตัวดำเนินการ || แทน OR() เพราะเขียนได้สั้นกว่า รองรับหลายเงื่อนไข และอ่านง่ายกว่า โดยเฉพาะเมื่อใช้ร่วมกับ IF หรือ SWITCH

ส่วนตัวผม คิดว่า OR/|| เป็นฟังก์ชันตรรกะพื้นฐานที่ต้องเข้าใจให้ลึก เพราะเมื่อเขียน DAX ที่ซับซ้อน บ่อยครั้งที่เราต้องตัดสินใจว่าเงื่อนไขควรเป็น AND หรือ OR กันแน่ – การเลือกผิดจะทำให้ผลลัพธ์ผิดไปเลย

How it works

จัดกลุ่มแบบผ่านอย่างน้อยหนึ่งเงื่อนไข

ใช้ OR/|| เพื่อกำหนดว่าถ้าเข้าเงื่อนไขข้อใดข้อหนึ่งให้จัดอยู่ในกลุ่มเดียวกัน

ทำเงื่อนไขสีหรือสถานะ

คืนข้อความ/สีเมื่อเข้าเกณฑ์อย่างน้อยหนึ่งข้อ เช่น ยอดขายสูงหรือกำไรสูง

Examples

ตัวอย่างที่ 1: ตรวจสอบค่าตรรกะพื้นฐานOR(TRUE, FALSE)

ถ้ามีอย่างน้อยหนึ่งอาร์กิวเมนต์เป็น TRUE ผลลัพธ์จะเป็น TRUE

fx
=OR(TRUE, FALSE)

ผลลัพธ์TRUE
ตัวอย่างที่ 2: ใช้ตัวดำเนินการ || (แนะนำ)Is Important = ([Total Sales] > 100000) || ([Total Profit] > 0)

ใช้ || เพื่อเชื่อมเงื่อนไขแบบ "อย่างน้อยหนึ่งข้อ" แล้วนำไปใช้ต่อกับ IF หรือทำเป็นตัวกรองใน Visual

fx
Is Important =
([Total Sales] > 100000) || ([Total Profit] > 0)

ผลลัพธ์TRUE เมื่อยอดขายสูง หรือกำไรเป็นบวก
ตัวอย่างที่ 3: ใช้ร่วมกับ IF เพื่อคืนข้อความFlag = IF( ([Total Sales] > 100000) || ([Total Quantity] > 100), "เด่น", "ปกติ" )

เมื่อยอดขายสูงหรือจำนวนมาก จะคืนข้อความ "เด่น" เพื่อใช้ทำป้ายกำกับหรือไฮไลต์ในรายงาน

fx
Flag =
IF(
([Total Sales] > 100000) || ([Total Quantity] > 100),
"เด่น",
"ปกติ"
)

ผลลัพธ์คืน "เด่น" เมื่อเข้าเกณฑ์ข้อใดข้อหนึ่ง
ตัวอย่างที่ 4: ตรวจสอบสถานะหลาย ๆ ตัวHighlight Status = IF( (Sales[Status] = "High Priority") || (Sales[Status] = "Urgent") || (Sales[Status] = "Critical"), "ต้องดำเนินการ", "ตามปกติ" )

ใช้ || หลายตัวเพื่อตรวจสอบว่าสถานะตรงกับเงื่อนไขใดข้อหนึ่ง ดีกว่าใช้ OR() ซ้อนกันแล้วอ่านยาก

fx
Highlight Status =
IF(
(Sales[Status] = "High Priority") || (Sales[Status] = "Urgent") || (Sales[Status] = "Critical"),
"ต้องดำเนินการ",
"ตามปกติ"
)

ผลลัพธ์คืน "ต้องดำเนินการ" เมื่อสถานะเป็นสถานะด่วนข้อใดข้อหนึ่ง

FAQs

OR ต่างจาก AND อย่างไร?+

OR จะคืน TRUE เมื่อมีอย่างน้อยหนึ่งเงื่อนไขเป็น TRUE (เขียน: A || B) ส่วน AND จะคืน TRUE ก็ต่อเมื่อทุกเงื่อนไขเป็น TRUE (เขียน: A && B)

ทำไมถึงแนะนำให้ใช้ || แทน OR()?+

เพราะ || เขียนสั้นกว่า รองรับหลายเงื่อนไขได้โดยไม่ต้องซ้อนฟังก์ชัน และอ่านง่ายกว่าในโค้ดจริง โดยเฉพาะเมื่อซ้อนกับ IF/SWITCH

OR() สามารถตรวจสอบเงื่อนไขตั้งแต่ 3 ตัวขึ้นไปได้ไหม?+

ฟังก์ชัน OR() รับเพียง 2 argument เท่านั้น ถ้ามี 3 เงื่อนไขขึ้นไปให้ใช้ || ต่อกัน เช่น (A > 100) || (B < 50) || (C = "X")

OR ใช้ได้กับ Calculated Column หรือเฉพาะ Measure?+

ใช้ได้ทั้งคู่ โดยไม่ต้องกังวลเรื่อง Filter Context vs Row Context เพราะ OR เป็นฟังก์ชันตรรกะธรรมดา ไม่เปลี่ยนแปลง Context

Resources & Related

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

ฟังก์ชันนี้ORLogical
Logical (6)
AND

ตรวจสอบว่าเงื่อนไขตรรกะทั้งหมดเป็นจริงหรือไม่ และคืนค่า TRUE เมื่อทุกเงื่อนไขเป็น TRUE

BITOR

BITOR คืนผลลัพธ์ของ OR แบบบิตระหว่าง Number1 และ Number2 เหมาะกับการรวม bit flags เพื่อสร้างค่า bitmask ใหม่

BITXOR

BITXOR คืนผลลัพธ์ของ XOR แบบบิตระหว่าง Number1 และ Number2 เหมาะกับการสลับแฟลก (toggle) ในงานที่ใช้ bitmask

IF

IF เป็นฟังก์ชันตรรกะพื้นฐานที่สำคัญที่สุดใน DAX ใช้สำหรับตรวจสอบเงื่อนไข (logical test) แล้วคืนค่าที่แตกต่างกันตามผลลัพธ์ว่าเป็นจริง (TRUE) หรือเท็จ (FALSE) สามารถใช้ได้ทั้งในบริบท calculated column, measure, calculated table และ visual calculation ซึ่งทำให้มีความยืดหยุ่นสูง คืนค่าเป็น scalar value ได้ทุกประเภท ไม่ว่าจะเป็นตัวเลข ข้อความ วันที่ หรือค่า boolean ถ้าไม่ระบุค่าสำหรับกรณีเท็จ (value_if_false) จะคืน BLANK() โดยอัตโนมัติ มีคุณสมบัติพิเศษคือ lazy evaluation behavior ที่ประมวลผลเฉพาะเส้นทาง (branch) ที่ถูกเลือกเท่านั้น ทำให้มีประสิทธิภาพในการทำงานที่ดี แตกต่างจาก Excel IF อย่างชัดเจนตรงที่ใช้รูปแบบอ้างอิงแบบ Table[Column] ทำงานภายใต้ filter context และแยกความแตกต่างระหว่าง BLANK กับ 0 อย่างเข้มงวด

NOT

NOT ใช้กลับค่าตรรกะของนิพจน์ (TRUE ↔ FALSE) เหมาะกับการเขียนเงื่อนไขแบบปฏิเสธ และนิยมใช้ร่วมกับ IF/AND/OR เพื่อสร้างตรรกะที่อ่านชัดเจน

SWITCH

SWITCH เป็นฟังก์ชันตรรมชาติสำหรับจัดการหลายกรณี ช่วยให้หลีกเลี่ยง IF ซ้อนหลายชั้น และสามารถใช้รูปแบบ SWITCH(TRUE()) ได้ สำหรับเงื่อนไขแบบช่วง (>=, <=) หรือเงื่อนไขซับซ้อน

Comments

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