Thep Excel

AND – ตรวจสอบเงื่อนไขตรรกะในDAX

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

=AND(<logical1>, <logical2>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
7/10

Difficulty
2/10

Usefulness
7/10

Syntax & Arguments

=AND(<logical1>, <logical2>)

Argument Type Required Default Description
logical1 Boolean Yes ค่าหรือนิพจน์ตรรกะตัวแรกที่ต้องการตรวจสอบ (TRUE หรือ FALSE)
logical2 Boolean Yes ค่าหรือนิพจน์ตรรกะตัวที่สองที่ต้องการตรวจสอบ (TRUE หรือ FALSE)

How it works

ตรวจสอบเงื่อนไขพร้อมกัน

ตรวจสอบว่าเงื่อนไขหลายตัวเป็นจริงพร้อมกันหรือไม่ เช่น ยอดขายเกินเป้าและมีกำไรที่ดี

กรองข้อมูลตามหลายเงื่อนไข

สร้างเงื่อนไขที่ซับซ้อนในการกรองข้อมูล โดยต้องผ่านทุกเงื่อนไขที่กำหนด

ควบคุมการแสดงผล

ใช้ร่วมกับ IF เพื่อควบคุมการแสดงผลตามหลายเงื่อนไข เช่น แสดงผลเฉพาะรายการที่ตรงเงื่อนไขทั้งหมด

Examples

ค่าตรรกะพื้นฐาน
AND(TRUE, TRUE)
เมื่อทั้งสองค่าเป็น TRUE จะได้ผลลัพธ์เป็น TRUE เท่านั้น
DAX Formula:

=AND(TRUE, TRUE)

Result:

TRUE

เงื่อนไขเบื้องต้นเมื่อมีค่าเป็น FALSE
AND(TRUE, FALSE)
เมื่อมีเงื่อนไขใดค่าหนึ่งเป็น FALSE ผลลัพธ์จะเป็น FALSE ทันที และ DAX จะไม่ประเมินค่าเงื่อนไขอื่นต่อไป (Short-circuit evaluation)
DAX Formula:

=AND(TRUE, FALSE)

Result:

FALSE

ตัวดำเนินการ && (แนะนำสำหรับหลายเงื่อนไข)
[Total Sales] > 1000000 && [Total Quantity] > 100 && [Year] = 2024
ตัวดำเนินการ && มีความยืดหยุ่นกว่า AND() เพราะเชื่อมเงื่อนไขได้หลายตัว โค้ดสั้นกว่า และอ่านง่ายกว่า ให้ประสิทธิภาพที่ดีกว่าเมื่อตรวจสอบเงื่อนไข 3 ตัวขึ้นไป
DAX Formula:

[Total Sales] > 1000000 && [Total Quantity] > 100 && [Year] = 2024

Result:

TRUE (เมื่อทั้งสามเงื่อนไขเป็นจริง)

ใช้ร่วมกับ IF ในหน่วยวัด
Performance Status = IF([Total Sales] > 1000000 && [Total Quantity] > 100, "Excellent", "Needs Improvement")
ตัวอย่างนี้แสดงการใช้ AND logic ร่วมกับ IF เพื่อสร้างหน่วยวัด (Measure) ที่ประเมินประสิทธิภาพ โดยตรวจสอบว่ายอดขายมากกว่า 1,000,000 และปริมาณสินค้ามากกว่า 100 หน่วยพร้อมกัน
DAX Formula:

Performance Status = IF([Total Sales] > 1000000 && [Total Quantity] > 100, "Excellent", "Needs Improvement")

Result:

"Excellent" (เมื่อทั้งสองเงื่อนไขเป็นจริง) หรือ "Needs Improvement"

การนับแถวที่ตรงตามเงื่อนไขหลายประการ
Qualified Orders = COUNTROWS(FILTER(Orders, Orders[Amount] > 5000 && Orders[Status] = "Delivered" && Orders[Days Taken] < 7))
ใช้ && ภายใน FILTER เพื่อตัดคำสั่งซื้อที่ตรงตามเงื่อนไขทั้งสามข้อ ตัวอย่างนี้แสดงกรณีที่ต้องตรวจสอบหลายเงื่อนไขพร้อมกัน ส่วนตัวผมชอบวิธีนี้เพราะชัดเจน อ่านง่าย และเป็นปฏิบัติที่ดี
DAX Formula:

Qualified Orders = COUNTROWS(FILTER(Orders, Orders[Amount] > 5000 && Orders[Status] = "Delivered" && Orders[Days Taken] < 7))

Result:

จำนวนคำสั่งซื้อที่มียอดเงินมากกว่า 5,000 พร้อมสถานะเป็น Delivered และใช้เวลาส่งน้อยกว่า 7 วัน

FAQs

ทำไมถึงแนะนำให้ใช้ && แทน AND()?

AND() รับได้แค่ 2 อาร์กิวเมนต์ ดังนั้นถ้าต้องตรวจสอบเงื่อนไข 3 ตัวขึ้นไป จะต้องซ้อนกัน และ(และ(…)) ซึ่งอ่านยาก && ทำได้ง่ายกว่า: A && B && C นอกจากนี้ && ยังมีประสิทธิภาพดีกว่า

ต้องใส่วงเล็บเมื่อใช้ทั้ง && และ || ไหม?

ควรใส่วงเล็บเพื่อความชัดเจน และช่วยป้องกันการตีความลำดับความสำคัญผิด เช่น (A && B) || (C && D) จะชัดเจนกว่า A && B || C && D

AND() กับ && ให้ผลลัพธ์เหมือนกันไหม?

ใช่ ทั้งสองให้ผลลัพธ์ตรรกะเหมือนกัน แต่ && มีความยืดหยุ่นมากกว่า อ่านง่ายกว่า และเชื่อมเงื่อนไขได้หลายตัว

Short-circuit evaluation คืออะไร?

เมื่อ DAX พบเงื่อนไขแรกที่เป็น FALSE จะหยุดประเมินเงื่อนไขถัดไป และคืนค่า FALSE ทันที ช่วยประหยัด CPU และเร่งความเร็วสูตร

Resources & Related

Additional Notes

ฟังก์ชัน AND ใช้ตรวจสอบว่าเงื่อนไขตรรกะทั้งหมดเป็นจริงหรือไม่ โดยจะคืนค่า TRUE ก็ต่อเมื่อทุกอาร์กิวเมนต์มีค่าเป็น TRUE เท่านั้น หากมีเงื่อนไขใดเป็น FALSE จะได้ผลลัพธ์เป็น FALSE ทันที

ฟังก์ชันนี้สามารถรับอาร์กิวเมนต์ได้เพียง 2 ตัวเท่านั้น แต่ DAX มีตัวดำเนินการ && ที่ให้ความยืดหยุ่นและประสิทธิภาพดีกว่า โดยเชื่อมเงื่อนไขได้หลายตัวในสูตรเดียว

ส่วนตัวผมคิดว่า AND() ตอนนี้มีความสำคัญลดลงแล้ว เพราะ && ทำงานเหมือนกันแต่อ่านง่ายกว่า ดีกว่าไป หากคุณเห็นโค้ด AND() ในที่ใดก็ได้ ลอง refactor เป็น && ดู จะทำให้โค้ดเป็นสมัยใหม่มากขึ้น และง่ายต่อการบำรุงรักษา

Leave a Reply

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