วันอาทิตย์ที่ 25 ตุลาคม พ.ศ. 2552

ISNA() , ISERR() , ISERROR()

=ISNA(เซลล์อ้างอิง) ใช้ตรวจสอบว่าเซลล์นั้นๆ ติดค่า #N/Aหรือไม่ ถ้าจริงจะคืนค่า TRUE ถ้าไม่จริงจะคืนค่า FALSE

=ISERR (เซลล์อ้างอิง) ใช้ตรวจสอบว่าเซลล์นั้นๆเกิดค่าผิดพลาดได้บางกรณี( แต่ไม่สามารถตรวจสอบค่า #N/A ได้ ) เช่น พิมพ์ชื่อสูตรผิด หรือ กรณีที่ตัวหารเป็นศูนย์ ถ้าจริงจะคืนค่า TRUE ถ้าไม่จริงจะคืนค่า FALSE

=ISERROR(เซลล์อ้างอิง) ใช้ตรวจสอบค่าความผิดพลาดได้มากกว่า ISNA() และ ISERR() อาจจะสามารถตรวจสอบค่าความผิดพลาดได้ทุกกรณี ถ้าพบว่ามีค่าผิดพลาดจริงจะคืนค่า TRUE ถ้าไม่จริงจะคืนค่า FALSE

ดังนั้นหากต้องการจะตรวจสอบค่าความผิดพลาดในกรณีต่างๆ แนะนำว่าควรใช้ ISERROR() ไปเลย ในทุกๆกรณี ดูตัวอย่างในตารางด้านล่าง

โดยปกติแล้วเรามักจะไม่ใช้สูตรเหล่านี้โดดๆ แต่มักจะใช้ร่วมกับสูตรหรือฟังก์ชั่นอื่นๆ เช่น IF เป็นต้น โดยใช้ IFครอบเข้าไปอีกชั้นเพื่อบังคับ ค่า ERROR ต่างๆ เช่นอาจจะบังคับเป็น 0(ศูนย์) หรือ"" (ค่าว่าง หรือ Blank) หรืออื่นๆแล้วแต่กรณี

ตัวอย่างการนำ ISERROR ไปใช้

ตารางด้านล่างหากต้องการหาผลรวมที่มีค่า error ต่างๆ เช่น #N/A , #DIV/0! ติดมาด้วยจะทำอย่างไร


ทำได้หลายๆวิธี กรณีนี้จะแสดงการใช้ IF และ ISERROR ดังนี้ โดยการเพิ่มคอลัมน์ขึ้นมาแล้วเขียนสูตร IF(ISERROR() การใช้คอลัมน์เพิ่มขึ้นมาบ้างจะช่วยลดความยุ่งยากลงไปได้มากมาย

ใช้ IF บังคับค่า ERROR ให้เป็น 0 ถ้าไม่ใช่ค่า ERRORให้เป็นตัวมันเอง
ที่เซลล์ C2 อ่านสูตรได้ว่า ถ้าเกิดค่า ERRORที่ B2 ให้เป็น 0 ถ้าไม่ใช่ให้เป็น B2(ตัวมันเอง)


หากไม่ต้องการเพิ่มคอลัมน์สามารถใช้ Array มาช่วยได้ดังนี้

ที่เซลล์ B8 พิมพ์ =SUM(IF(ISERROR(B2:B6),0,(B2:B6)))

จากนั้น(บังคับ)กด แป้น Ctrl+Shift+Enter พร้อมกัน จะเกิดเครื่องหมาย { } ปิดสูตรหน้าหลังโดยอัตโนมัติ

หรือถ้าเลี่ยงไปใช้ IS(NUMBER() ร่วมกับ IFก็ทำได้ คือใช้IFบังคับค่าตัวเลขดังนี้



ที่เซลล์ C2 อ่านสูตรได้ว่า ถ้า B2เป็นตัวเลข ให้เป็น B2(ตัวมันเอง)
ถ้าไม่ใช่ให้เป็น 0

ถ้าจะใช้ Array จะเป็นดังนี้


ที่เซลล์ B8 พิมพ์สูตร =SUM(IF(ISNUMBER(B2:B6),B2:B6,0))
หรือ =SUM(IF(ISNUMBER(B2:B6),B2:B6)) ละ 0 ไว้ได้
จากนั้น (บังคับ) กด Ctrl + Shift + Enter พร้อมกัน จะเกิดเครื่องหมาย { } ปิดสูตรหน้าหลัง โดยอัตโนมัติ
** พิมพ์เครื่องหมาย { } จากแป้นพิมพ์ตรงๆ จะใช้กับ Arrayไม่ได้**
รายละเอียดเรื่อง Array ยังไม่พูดถึงตอนนี้ เพียงอยากแสดงให้เห็นว่ามีอีกหลายๆวิธีที่แตกต่างกันแต่ผลลัพท์เท่ากัน

อีกประการหนึ่งคือในการทำงานจริงๆนั้น หากต้องใช้ข้อมูลร่วมกันกับคนอื่นๆแล้วพยายามหลีกเลี่ยงการใช้ Array จะดีกว่า เนื่องจาก Array มีตั้งแต่ Array ที่ไม่ยากมากนัก จนถึง Array ที่ยุ่งยากซับซ้อน คนอื่นๆอาจจะไม่เข้าใจในสูตรต่างๆ และไม่สามารถแก้ปัญหาในภายหลังได้