ฉันจะซ่อน # DIV / 0 ได้อย่างไร! ข้อผิดพลาดขณะที่เซลล์ที่อ้างอิงว่างเปล่า


28

ในคอลัมน์ CI มีการผลิต ในคอลัมน์ DI มีเป้าหมาย ในคอลัมน์ EI มีความแปรปรวน% สูตรของฉันคือ=(D11-C11)/D11

แต่อย่างไรคุณซ่อนเซลล์ลงแผ่นจนกว่าคุณจะใส่อะไรในD11และไปซ่อนC11 #DIV/0!ฉันลองใช้IFสูตร แต่ดูเหมือนว่าผิด

คำตอบ:


45

ฟังก์ชัน IFERROR

มีการIFทดสอบ"พิเศษ" ที่ออกแบบมาเพื่อจัดการกับข้อผิดพลาด:

=IFERROR( (D11-C11)/D11, "")

สิ่งนี้จะให้ค่าที่คำนวณได้ของ (D11-C11) / D11 ยกเว้นผลลัพธ์ที่ได้คือข้อผิดพลาดซึ่งในกรณีนั้นจะส่งคืนค่าว่าง

คำอธิบาย

ค่า "if error" พารามิเตอร์สุดท้ายสามารถเป็นอะไรก็ได้ มันไม่ได้ จำกัด อยู่ที่เครื่องหมายคำพูดคู่ว่างเปล่า IFERROR ทำงานได้กับเงื่อนไขใด ๆ ที่ส่งกลับค่าความผิดพลาด (สิ่งที่ขึ้นต้นด้วย#) เช่น:

#NULL!  -   reference to an intersection of two ranges that don't intersect
#DIV/0! -   attempt to divide by zero
#VALUE! -   variable is the wrong type 
#REF!   -   invalid cell reference
#NAME?  -   formula name, or text within a formula, isn't recognized
#NUM!   -   invalid number
#N/A    -   value is not available

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

สเปรดชีตอื่น ๆ

ฟังก์ชันนี้ยังมีให้สำหรับผู้ใช้โปรแกรมสเปรดชีตอื่น ๆ ถูกเพิ่มลงใน Lotus Symphony Spreadsheets ในเวอร์ชัน 4.0 (ยังไม่ได้เป็นเวอร์ชันที่เผยแพร่ใน Linux distros บางรุ่น) แม้ว่า @Kroltan ชี้ให้เห็นว่ามีความคล่องตัวยิ่งขึ้นใน Google ชีตโดยที่ค่า "if error" เป็นตัวเลือก มันจะมีค่าเริ่มต้นเป็นค่าว่างหากไม่มี ดังนั้นในกรณีเช่นนี้ที่คุณต้องการเพียงแค่ค่าความผิดพลาดซ่อนศักยภาพ Google IFERROR(expression)ชีตสามารถทำมันได้ด้วย


ฉันรู้ว่านี้คือสำหรับ Excel แต่ใน Google Docs และเปิด / LibreOffice, มีการเปลี่ยนแปลงโดยไม่จำเป็นต้อง "มูลค่าถ้าเป็นจริง" =IFERROR(yourformula)การลดความซับซ้อนของมัน
Kroltan

1
@Kroltan: เมื่อฉันคิดว่าพวกเขาไม่สามารถปรับปรุงฟังก์ชันนี้อีกต่อไป ดูเหมือนว่าคุณถูกต้องเกี่ยวกับ Google ชีต IFERROR มีค่าเริ่มต้นให้ว่างโดยไม่มีข้อผิดพลาดหากไม่มีการระบุค่าสำรองดังนั้นจึงเป็นตัวเลือก LibreOffice Calc ใช้ฟังก์ชันกับเวอร์ชัน 4.0 เวอร์ชันล่าสุดที่ฉันสามารถเข้าถึงได้คือ 4.2 และในกรณีนั้นยังจำเป็นต้องมีค่า if-error
fixer1234

แน่นอนฉันได้ทดสอบเฉพาะใน Google Spreadsheets แต่ตามเอกสารนั้นมันเหมือนกับของ LibreOffice ขออภัยที่เข้าใจผิด
Kroltan

11

ภายในIFคำสั่งเป็นการตรวจสอบแบบลอจิคัล (ส่วนแรก)

IF(logical_test, value_if_true, [value_if_false])

เพื่อหลีกเลี่ยงการก่อให้เกิดข้อผิดพลาดขณะที่การผลิตและ / หรือข้อมูลเป้าหมายของคุณว่างเปล่าใช้ORกับISBLANKฟังก์ชั่นภายในตรวจสอบตรรกะ

=IF(OR(ISBLANK(C11),ISBLANK(D11)), "", (D11-C11)/D11)

วิธีนี้จะตรวจสอบว่าเซลล์ที่อ้างถึงว่างเปล่าหรือไม่ หากหนึ่งหรือทั้งสองว่างเปล่า (ทำให้การทดสอบตรรกะจริง) มันจะประมวลผลIF TRUEส่วนของIFคำสั่ง ในกรณีนี้""สูตรจะบอกให้ไม่ทำอะไรเลย มิฉะนั้นจะประมวลผลIF FALSEส่วนของสูตรซึ่งเป็นสูตรที่คุณมี


ฉันอัปเดตสิ่งนี้เพื่อรวมการตรวจสอบทั้งC11& D11ตามที่คุณโพสต์ไว้ ขอโทษที่ฉันพลาดนั่นในคำตอบเดิมของฉัน
CharlieRB

จับดี. หากเป้าหมายได้รับการเติมข้อมูลล่วงหน้าแล้วรอรายการการผลิตผลลัพธ์จะแสดงความแปรปรวน 100% จนกว่าจะมีการป้อนเข้า โซลูชันของคุณจะดูแลซึ่งจะมีความกดดันน้อยกว่ามากหากประสิทธิภาพถูกวัดจากแผ่นงานนี้ :-)
fixer1234


1

เลือกสเปรดชีตทั้งหมดจากนั้นภายใต้เมนูหน้าแรก - การจัดรูปแบบตามเงื่อนไข - กฎใหม่ ... - เลือกรูปแบบเฉพาะเซลล์ที่มี - ภายใต้จัดรูปแบบเฉพาะเซลล์ที่มีข้อผิดพลาดเลือก- ปุ่มรูปแบบ ...คลิก - ไปที่แท็บแบบอักษร - ภายใต้สีที่เลือก สีตัวอักษรเดียวกันกับพื้นหลัง (เช่นสีขาว)

กล่องโต้ตอบกฎใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.