=AND(<logical1>, <logical2>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| logical1 | Boolean | Yes | ค่าหรือนิพจน์ตรรกะตัวแรกที่ต้องการตรวจสอบ (TRUE หรือ FALSE) | |
| logical2 | Boolean | Yes | ค่าหรือนิพจน์ตรรกะตัวที่สองที่ต้องการตรวจสอบ (TRUE หรือ FALSE) |
ตรวจสอบว่าเงื่อนไขหลายตัวเป็นจริงพร้อมกันหรือไม่ เช่น ยอดขายเกินเป้าและมีกำไรที่ดี
สร้างเงื่อนไขที่ซับซ้อนในการกรองข้อมูล โดยต้องผ่านทุกเงื่อนไขที่กำหนด
ใช้ร่วมกับ IF เพื่อควบคุมการแสดงผลตามหลายเงื่อนไข เช่น แสดงผลเฉพาะรายการที่ตรงเงื่อนไขทั้งหมด
AND(TRUE, TRUE)=AND(TRUE, TRUE)
TRUE
AND(TRUE, FALSE)=AND(TRUE, FALSE)
FALSE
[Total Sales] > 1000000 && [Total Quantity] > 100 && [Year] = 2024[Total Sales] > 1000000 && [Total Quantity] > 100 && [Year] = 2024
TRUE (เมื่อทั้งสามเงื่อนไขเป็นจริง)
Performance Status = IF([Total Sales] > 1000000 && [Total Quantity] > 100, "Excellent", "Needs Improvement")Performance Status = IF([Total Sales] > 1000000 && [Total Quantity] > 100, "Excellent", "Needs Improvement")
"Excellent" (เมื่อทั้งสองเงื่อนไขเป็นจริง) หรือ "Needs Improvement"
Qualified Orders = COUNTROWS(FILTER(Orders, Orders[Amount] > 5000 && Orders[Status] = "Delivered" && Orders[Days Taken] < 7))Qualified Orders = COUNTROWS(FILTER(Orders, Orders[Amount] > 5000 && Orders[Status] = "Delivered" && Orders[Days Taken] < 7))
จำนวนคำสั่งซื้อที่มียอดเงินมากกว่า 5,000 พร้อมสถานะเป็น Delivered และใช้เวลาส่งน้อยกว่า 7 วัน
AND() รับได้แค่ 2 อาร์กิวเมนต์ ดังนั้นถ้าต้องตรวจสอบเงื่อนไข 3 ตัวขึ้นไป จะต้องซ้อนกัน และ(และ(…)) ซึ่งอ่านยาก && ทำได้ง่ายกว่า: A && B && C นอกจากนี้ && ยังมีประสิทธิภาพดีกว่า
ควรใส่วงเล็บเพื่อความชัดเจน และช่วยป้องกันการตีความลำดับความสำคัญผิด เช่น (A && B) || (C && D) จะชัดเจนกว่า A && B || C && D
ใช่ ทั้งสองให้ผลลัพธ์ตรรกะเหมือนกัน แต่ && มีความยืดหยุ่นมากกว่า อ่านง่ายกว่า และเชื่อมเงื่อนไขได้หลายตัว
เมื่อ DAX พบเงื่อนไขแรกที่เป็น FALSE จะหยุดประเมินเงื่อนไขถัดไป และคืนค่า FALSE ทันที ช่วยประหยัด CPU และเร่งความเร็วสูตร
ฟังก์ชัน AND ใช้ตรวจสอบว่าเงื่อนไขตรรกะทั้งหมดเป็นจริงหรือไม่ โดยจะคืนค่า TRUE ก็ต่อเมื่อทุกอาร์กิวเมนต์มีค่าเป็น TRUE เท่านั้น หากมีเงื่อนไขใดเป็น FALSE จะได้ผลลัพธ์เป็น FALSE ทันที
ฟังก์ชันนี้สามารถรับอาร์กิวเมนต์ได้เพียง 2 ตัวเท่านั้น แต่ DAX มีตัวดำเนินการ && ที่ให้ความยืดหยุ่นและประสิทธิภาพดีกว่า โดยเชื่อมเงื่อนไขได้หลายตัวในสูตรเดียว
ส่วนตัวผมคิดว่า AND() ตอนนี้มีความสำคัญลดลงแล้ว เพราะ && ทำงานเหมือนกันแต่อ่านง่ายกว่า ดีกว่าไป หากคุณเห็นโค้ด AND() ในที่ใดก็ได้ ลอง refactor เป็น && ดู จะทำให้โค้ดเป็นสมัยใหม่มากขึ้น และง่ายต่อการบำรุงรักษา