ฟังก์ชัน XOR กับ OR ต่างกันยังไงเหรอคะ?” ลูกศิษย์คนหนึ่งถามขึ้นขณะที่ผมอธิบายวิธีการทำงานของ OR

ฟังเผินๆเหมือนคำถามเบๆ แต่จริงๆแล้วคือคำถามที่ดีมาก เพราะ XOR กับ OR บางครั้งก็ให้ผลลัพธ์ตรงกัน บางครั้งก็ไม่ตรงกัน

ยังไงน่ะหรือครับ?

พอมีเวลาสัก 2 นาทีไหม ขออธิบายด้วยบทความนี้ครับ ^__^

OR เป็นฟังก์ชันที่ใช้เชื่อมเงื่อนไขเข้าด้วยกัน (ภาษาไทยคือคำว่า “หรือ”) ให้ผลลัพธ์เป็น TRUE หรือ FALSE 

XOR หรือชื่อเต็มๆคือ Exclusive OR เป็นฟังก์ชันที่ใช้เชื่อมเงื่อนไขเข้าด้วยกัน ให้ผลลัพธ์เป็น TRUE หรือ FALSE

(XOR เริ่มใช้ตั้งแต่ Excel 2013 (Excel 2007/ 2010 ใช้ไม่ได้))

ใช่ครับ ทั้งสองฟังก์ชันให้ผลลัพธ์เหมือนกันคือ TRUE หรือ FALSE

โครงสร้างของทั้งสองฟังก์ชันก็เหมือนกันด้วย นั่นคือ

=OR(logical 1, [logical2],…)

=XOR(logical 1, [logical2],…)

แต่ผลลัพธ์ไม่เหมือนกันในบางกรณี

ขออธิบายด้วยรูปนี้ครับ

XOR_2Condition.png

(ได้ยินเสียงหลายคนร้อง “อ๋อ” ^^)

ใช่ครับ ถ้ามี 2 เงื่อนไข สำหรับ OR นั้น ขอแค่มี 1 เงื่อนไขเป็นจริง จะให้ผลลัพธ์เป็นจริง (TRUE) เสมอ

พูดง่ายๆคือ OR จะให้ค่าเป็นเท็จ (FALSE) เพียงกรณีเดียว นั่นคือกรณีที่ทั้งสองเงื่อนไขเป็นเท็จ

(OR ตรงกับ common sense เพราะความหมายก็คือ “หรือ” นั่นเอง)

แต่ XOR จะให้ผลลัพธ์เป็นจริง (TRUE) ถ้าเงื่อนไขหนึ่งเป็นจริงและอีกเงื่อนไขเป็นเท็จ

ในทางตรงข้าม ถ้าเงื่อนไขเป็นจริงทั้งคู่ XOR จะให้ผลลัพธ์เป็นเท็จ (FALSE)

(แต่ OR จะให้ผลลัพธ์เป็นจริง)

นี่แหละครับคือความแตกต่างของ OR และ XOR

แต่…. นี่คือความแตกต่างเฉพาะกรณีมี 2 เงื่อนไข

แล้วถ้ามีมากกว่า 2 เงื่อนไขล่ะ?

ขออธิบายด้วยภาพนี้ครับ

XOR_5Condition.png

พอจับความแตกต่างได้ไหมครับ ^__^

จากภาพจะพบว่า ถ้าจำนวนเงื่อนไขที่เป็นจริงคือ 1, 3 หรือ 5 (เลขคี่) ผลลัพธ์ของ OR คือ TRUE ผลลัพธ์ของ XOR ก็คือ TRUE (เหมือนกัน)

แต่ถ้าจำนวนเงื่อนไขที่เป็นจริงคือ 2 หรือ 4 (เลขคู่) ผลลัพธ์ของ OR ยังคงเป็น TRUE แต่ผลลัพธ์ของ XOR กลับเป็น FALSE!

สำหรับ OR นั้น จะให้ผลลัพธ์เป็นจริง (TRUE) แค่มี 1 เงื่อนไขที่เป็นจริงก็พอแล้ว

แต่สำหรับ XOR นั้น จะให้ผลลัพธ์เป็นจริง ถ้าจำนวนเงื่อนไขที่เป็นจริง (TRUE) เป็นเลขคี่!

หรือ จะให้ผลลัพธ์เป็นเท็จ (FALSE) ถ้าจำนวนเงื่อนไขที่เป็นจริง (TRUE) เป็นเลขคู่ !

สรุปง่ายๆคือ

ถ้ามี 2 เงื่อนไข XOR จะให้ผลลัพธ์เป็นจริง ถ้าเงื่อนไขนึงเป็นจริงและอีกเงื่อนไขเป็นเท็จ (เป็นจริงทั้งคู่ไม่ได้)

แต่ถ้ามีมากกว่า 2 เงื่อนไข XOR จะให้ผลลัพธ์เป็นจริง ถ้าจำนวนเงื่อนไขที่เป็นจริงเป็นเลขคี่ (ให้ผลลัพธ์เป็นเท็จ ถ้าจำนวนเงื่อนไขที่เป็นจริงเป็นเลขคู่)

“ฟังดูขัดๆกับ common sense ใช่ไหมครับ?”

ใช่ครับ ด้วยผลลัพธ์ที่(ดูเหมือนจะ)ประหลาดนี้ ในทางปฏิบัติเราจึงแทบไม่ใช้ XOR เลย

แล้ว XOR มีไว้ทำไมน่ะหรือครับ?” 

XOR มักใช้ในงานด้านโปรแกรมมิ่ง คนที่ใช้ส่วนใหญ่เป็นโปรแกรมเมอร์ ใช้ตรวจสอบเงื่อนไขที่ซับซ้อน

ใช้กับเคสแบบไหนน่ะหรือครับ?”

เพื่ออธิบายให้เห็นภาพ พอดีผมเจอตัวอย่างการใช้งาน XOR ที่ดีมากจากเว็บ https://www.ablebits.com/office-addins-blog/2014/12/17/excel-and-or-xor-not-functions/#excel-xor-function ขออนุญาตใช้ตัวอย่างนี้อธิบายเป็นภาษาไทยนะครับ

สมมติเราเป็นผู้จัดการแข่งขันรายการหนึ่ง ผู้เข้าแข่งขันแต่ละคนจะเล่นเกมทั้งหมด 3 รอบ ใครชนะเพียง 2 รอบก็ผ่านเข้ารอบต่อไป

ตอนนี้อยู่ในการแข่งรอบที่ 3 ดังนั้นคนที่ชนะทั้งรอบที่ 1 และ 2 ก็ไม่จำเป็นต้องเล่นรอบที่ 3 (เพราะเข้ารอบแล้ว) หรือคนที่แพ้ทั้งสองรอบก็ไม่จำเป็นต้องเล่นรอบที่ 3 (เพราะตกรอบแล้ว)

ถ้ามีผลการแข่งรอบที่ 1 และ 2 ในมือ จะรู้ได้ยังไงว่าใครต้องเล่นรอบที่ 3 บ้าง?

คำตอบคือใช้ฟังก์ชัน XOR นั่นเอง !

แบบนี้ครับ ^__^

XOR_Case.png

สูตร (ในเซลล์ E4) ก็คือ

=IF(XOR(C4=”Won”,D4=”Won”),”Yes”,”No”)

กรณีมี 2 เงื่อนไข XOR จะให้ผลลัพธ์เป็นจริง ถ้าเงื่อนไขหนึ่งเป็นจริงและอีกเงื่อนไขเป็นเท็จ

ดังนั้น ใครที่ชนะรอบ 1 แล้วแพ้รอบ 2 (หรือแพ้รอบ 1 แล้วชนะรอบ 2) จะได้ผลลัพธ์จาก XOR (XOR(C4=”Won”,D4=”Won”)) เป็นจริง (TRUE)

XOR(TRUE, FALSE) = TRUE

XOR(FALSE, TRUE) = TRUE

ในทางตรงข้าม ใครที่ชนะทั้งสองรอบ หรือแพ้ทั้งสองรอบ จะได้ผลลัพธ์จาก XOR เป็นเท็จ (FALSE)

XOR(TRUE, TRUE) = FALSE

XOR(FALSE, FALSE) = FALSE

เมื่อใช้ร่วมกับ IF จึงได้ผลลัพธ์เป็น Yes หรือ No นั่นเอง

พอเห็นภาพใช่ไหมครับ ^__^

ถ้าศึกษา XOR เพียงฟังก์ชันเดียวอาจจะงงๆ แต่ถ้าศึกษาพร้อมกับ OR รับรองว่าเข้าใจถึงขั้น “กระจ่างแจ้ง” แน่นอน

ขอให้สนุกกับ Excel ทุกคนครับ ^__^

 

สำหรับใครที่สนใจไฟล์ตัวอย่างของบทความนี้ สามารถดาวน์โหลดเพื่อศึกษาได้เลยครับ

ORvsXOR_180530

 

หากคุณชอบบทความแนวนี้ สามารถอัพเดตบทความใหม่ๆโดยคลิก Like เฟสบุ๊คแฟนเพจ วิศวกรรีพอร์ต หรือคลิกที่นี่

อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^__^

 

อ้างอิงข้อมูลจาก

https://exceljet.net/excel-functions/excel-xor-function

https://www.ablebits.com/office-addins-blog/2014/12/17/excel-and-or-xor-not-functions/#excel-xor-function

https://powerspreadsheets.com/excel-xor/