تعيد =IFERROR(B2/C2,0) ناتج B2/C2، أو 0 عندما يكون ذلك الناتج خطأ. الوسيط الأول هو الصيغة التي تريدها؛ والثاني هو ما يُعرض بدلًا من أي خطأ تنتجه.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Product | Revenue | Units | Plain | With IFERROR |
| 2 | Pens | $120 | 80 | $1.50 | $1.50 |
| 3 | Paper | $300 | 50 | $6.00 | $6.00 |
| 4 | Ink | $90 | 0 | #DIV/0! | $0.00 |
| 5 | Tape | $45 | 30 | $1.50 | $1.50 |
| 6 | Clips | $0 | 0 | #DIV/0! | $0.00 |
لدى Ink وClips صفر وحدات، لذا تعرض القسمة العادية في العمود D الخطأ #DIV/0!. ويعرض العمود E القيمة $0.00 لهما والسعر العادي لكل صف آخر. اكتب 15 في C4 فيعرض العمودان سعر Ink.
صيغة دالة IFERROR
=IFERROR(value, value_if_error)
valueهي الصيغة المراد حسابها.value_if_errorتُعاد عندما تكونvalueأي خطأ: #N/A و#VALUE! و#REF! و#DIV/0! و#NUM! و#NAME? و#NULL!، والأخطاء الأحدث مثل #CALC!.- إذا لم تكن
valueخطأ، تعيدها IFERROR دون تغيير.
يمكن أن يكون البديل رقمًا (0)، أو نصًا ("Not found")، أو نصًا فارغًا ("")، أو صيغة أخرى، مثل بحث ثانٍ في جدول آخر: =IFERROR(VLOOKUP(E2,A2:C6,3,FALSE),VLOOKUP(E2,G2:I6,3,FALSE)).
IFERROR مع VLOOKUP
يعيد البحث الخطأ #N/A عندما لا تكون القيمة في الجدول. وضعه داخل IFERROR يعرض رسالة بدلًا من ذلك:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Look for | Price | |
| 2 | Apple | Fruit | $1.20 | Pear | $1.50 | |
| 3 | Pear | Fruit | $1.50 | Kiwi | Not found | |
| 4 | Carrot | Vegetable | $0.80 | Milk | $1.10 | |
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
Kiwi ليست في القائمة، لذا تقول F3 إنها Not found. اكتب Kiwi في A4 بدلًا من Carrot فتجدها F3. ومع XLOOKUP لا تحتاج إلى IFERROR لهذا الغرض، لأن وسيطها الرابع هو قيمة "غير موجود": =XLOOKUP(E2,A2:A6,C2:C6,"Not found").
IFNA: التقاط #N/A فقط
تعمل IFNA مثل IFERROR لكنها تستبدل #N/A فقط. وفي البحث يكون هذا عادة ما تريده: #N/A تعني "غير موجود"، وهي إجابة طبيعية، بينما يعني أي خطأ آخر أن الصيغة نفسها خاطئة. في هذه الورقة تطلب الصيغ العمود 4 من جدول من ثلاثة أعمدة، وهذا خطأ مطبعي:
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Look for | IFERROR | IFNA | |
| 2 | Apple | Fruit | 1.2 | Pear | Not found | #REF! | |
| 3 | Pear | Fruit | 1.5 | ||||
| 4 | Carrot | Vegetable | 0.8 | ||||
| 5 | Bread | Bakery | 2.4 | ||||
| 6 | Milk | Dairy | 1.1 |
Pear موجودة في الجدول، ومع ذلك تقول F2 إنها Not found: حوّلت IFERROR الخطأ #REF! الناتج عن رقم العمود الخاطئ إلى الرسالة نفسها التي تظهر لمنتج مفقود. أما G2 فتترك #REF! يمر، فترى أن الصيغة معطلة. غيّر 4 إلى 3 في G2 فتعيد 1.5. تحتاج IFNA إلى Excel 2013 أو ما بعده.
إعادة خلية فارغة بدل الخطأ
لعرض لا شيء، استخدم نصًا فارغًا، أي علامتي اقتباس مزدوجتين، كبديل:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Month | Last year | This year | Growth |
| 2 | Jan | 200 | 240 | 20% |
| 3 | Feb | 0 | 150 | |
| 4 | Mar | 180 | 171 | -5% |
| 5 | Apr | 90 | ||
| 6 | May | 250 | 300 | 20% |
لم تكن لشهري فبراير وأبريل مبيعات في العام الماضي، لذا لا يمكن حساب نموهما وتبقى الخلية فارغة. وتعرض الأشهر الأخرى 20% وسالب 5% و20%. الخلية التي فيها "" تحتوي على نص: تتخطاها SUM وAVERAGE، لكن =D3*2 تعطي #VALUE!. إذا كانت صيغ لاحقة تجري عمليات حسابية على العمود، فأعد 0 بدلًا من ذلك.
تمرين: البحث مع قيمة بديلة
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Stock | Look for | Stock | ||
| 2 | Apple | 40 | Kiwi | |||
| 3 | Pear | 25 | ||||
| 4 | Carrot | 60 | ||||
| 5 | Bread | 12 | ||||
| 6 | Milk | 30 |
دورك: في F2، ابحث عن مخزون المنتج الموجود في E2 من A2:B6، واعرض "Not found" عندما لا يكون في القائمة.
لماذا قد يخفي إخفاء كل الأخطاء أخطاءً حقيقية
لا تصلح IFERROR أي شيء؛ إنها تقرر ما تعرضه الخلية. قبل أن تضع صيغة داخلها:
- اعرف سبب الخطأ. عندما تسبب خلية Units فارغة الخطأ #DIV/0!، فقد يكون الحل الحقيقي بيانات يجب أن يدخلها أحد، لا سعرًا صفريًا.
- فضّل IFNA في البحث، حتى يبقى ظاهرًا رقم العمود الخاطئ (#REF!)، أو الاسم المكتوب خطأ (#NAME?)، أو النص في عمود أرقام (#VALUE!).
- اختبر الحالة المحددة في القسمة. تتعامل
=IF(C2=0,0,B2/C2)مع المقسوم عليه الصفري ولا شيء غيره؛ ويبقى خطأ المرجع الخاطئ في B2 ظاهرًا. تقارن صفحة #DIV/0! بين الأسلوبين. - اختر بديلًا لا يمكن الخلط بينه وبين البيانات. الصفر في عمود أسعار يبدو كسعر حقيقي ويخفض المتوسط؛ أما
""أو "Not found" فلا.
ضع الصيغة داخل IFERROR في آخر خطوة، بعد أن تعطي النتيجة الصحيحة في الصفوف التي يجب أن تعمل.
الأسئلة الشائعة
كيف أستخدم IFERROR مع VLOOKUP؟
ضع البحث داخلها: =IFERROR(VLOOKUP(E2,A2:C6,3,FALSE),"Not found"). عندما لا تكون E2 في العمود الأول، تعرض الخلية Not found بدلًا من #N/A. وتفعل =IFNA(VLOOKUP(E2,A2:C6,3,FALSE),"Not found") الشيء نفسه مع إبقاء الأخطاء الأخرى ظاهرة.
كيف أجعل IFERROR تعيد خلية فارغة؟
استخدم نصًا فارغًا كوسيط ثانٍ: =IFERROR(B2/C2,""). تبدو الخلية فارغة، لكنها تحتوي على نص، لذا تعطي =D2+1 عليها الخطأ #VALUE!؛ أما SUM وAVERAGE فتتخطيانها.
ما الفرق بين IFERROR وIFNA؟
تستبدل IFERROR كل خطأ: #N/A و#DIV/0! و#VALUE! و#REF! و#NAME? و#NUM! و#NULL!. أما IFNA فتستبدل #N/A فقط، أي "غير موجود" في البحث، وتترك كل خطأ آخر ظاهرًا، فلا تُخفى صيغة معطلة.
كيف أستبدل #N/A بصفر في الاكسل؟
ضع الصيغة داخل IFNA مع 0 كقيمة: =IFNA(VLOOKUP(E2,A2:C6,3,FALSE),0). وفي XLOOKUP يكون الاستبدال مدمجًا كوسيطها الرابع: =XLOOKUP(E2,A2:A6,C2:C6,0).
أي إصدارات الاكسل فيها IFERROR وIFNA؟
توجد IFERROR منذ Excel 2007 وIFNA منذ Excel 2013. في الملفات الأقدم قد ترى =IF(ISERROR(B2/C2),0,B2/C2)، التي تؤدي عمل IFERROR نفسه لكنها تحسب الصيغة مرتين.