معرفی تابع IFERROR
تابع IFERROR یکی از کاربردیترین توابع اکسل برای مدیریت خطاها در فرمولهاست. وقتی یک فرمول در اکسل به خطا میخورد، معمولاً خروجیهایی مثل #DIV/0!، #N/A، #VALUE!، #REF! یا #NAME? نمایش داده میشود. این خطاها برای کاربر نهایی گزارش، فرم فروش، داشبورد یا فایل مدیریتی ظاهر خوبی ندارند و ممکن است باعث سردرگمی شوند.
تابع IFERROR به شما کمک میکند اگر فرمول اصلی بدون خطا بود، همان نتیجه نمایش داده شود؛ اما اگر خطا داشت، یک مقدار دلخواه مثل صفر، متن فارسی، سلول خالی یا یک پیام راهنما نمایش داده شود.
مثال ساده: فرض کنید در سلول A2 مقدار فروش و در سلول B2 تعداد کالا قرار دارد. اگر بخواهید میانگین قیمت هر کالا را محاسبه کنید، ممکن است در صورت صفر بودن B2 با خطای تقسیم بر صفر روبهرو شوید. با IFERROR میتوانید به جای خطا، پیام مناسب نمایش دهید.
=IFERROR(A2/B2, "تعداد کالا معتبر نیست")
در این مثال اگر تقسیم A2 بر B2 بدون خطا انجام شود، نتیجه تقسیم نمایش داده میشود. اما اگر B2 صفر یا خالی باشد و خطا ایجاد شود، متن «تعداد کالا معتبر نیست» نمایش داده میشود.
کاربردهای اصلی تابع IFERROR
- مخفی کردن خطاهای فرمولی در گزارشها و داشبوردها
- نمایش پیام فارسی و قابل فهم به جای خطاهای اکسل
- جلوگیری از نمایش خطا هنگام تقسیم بر صفر
- مدیریت خطاهای جستجو در توابعی مثل VLOOKUP، XLOOKUP و MATCH
- نمایش مقدار صفر یا سلول خالی به جای خطا
- تمیزتر کردن خروجی فرمولها برای کاربران مبتدی
- جلوگیری از بههمریختگی محاسبات وابسته به سلولهای خطادار
- ساخت گزارشهای حرفهایتر و خواناتر
- مدیریت خطاهای ناشی از دادههای ناقص یا اشتباه
- ترکیب با توابع شرطی، آماری و جستجو برای ساخت فرمولهای قابل اعتمادتر
ساختار (Syntax)
ساختار اصلی تابع IFERROR در اکسل به شکل زیر است:
=IFERROR(value, value_if_error)
اگر تنظیمات منطقهای اکسل شما از جداکننده فارسی یا اروپایی استفاده کند، ممکن است لازم باشد به جای کاما از نقطهویرگول استفاده کنید:
=IFERROR(value; value_if_error)
نمایش مفهومی آرگومانها به فارسی:
=IFERROR(مقدار_یا_فرمول; مقدار_در_صورت_خطا)
تابع IFERROR فقط دو آرگومان دارد. آرگومان اول همان فرمول یا مقداری است که میخواهید بررسی شود، و آرگومان دوم چیزی است که در صورت بروز خطا نمایش داده میشود.
آرگومانها
value / مقدار یا فرمول اصلی
این آرگومان، مقدار، سلول یا فرمولی است که اکسل باید آن را محاسبه کند. اگر این بخش بدون خطا محاسبه شود، خروجی همان نتیجه واقعی خواهد بود.
مثلاً در فرمول زیر، بخش A2/B2 همان مقدار یا فرمول اصلی است:
=IFERROR(A2/B2, 0)
اگر تقسیم بدون خطا باشد، نتیجه تقسیم نمایش داده میشود. اگر خطا رخ دهد، اکسل سراغ آرگومان دوم میرود.
value_if_error / مقدار در صورت خطا
این آرگومان مشخص میکند اگر فرمول اصلی خطا داشت، چه چیزی نمایش داده شود. این مقدار میتواند عدد، متن، سلول خالی، یک فرمول دیگر یا حتی یک تابع دیگر باشد.
مثال نمایش متن در صورت خطا:
=IFERROR(A2/B2, "خطا در محاسبه")
مثال نمایش صفر در صورت خطا:
=IFERROR(A2/B2, 0)
مثال نمایش سلول خالی در صورت خطا:
=IFERROR(A2/B2, "")
مثالهای ساده و پایه
مثال ۱: جلوگیری از خطای تقسیم بر صفر
فرض کنید در سلول A2 مبلغ فروش و در سلول B2 تعداد فروش قرار دارد. برای محاسبه میانگین مبلغ فروش، از تقسیم استفاده میکنیم. اما اگر B2 صفر باشد، اکسل خطای #DIV/0! نشان میدهد.
=IFERROR(A2/B2, "قابل محاسبه نیست")
اگر B2 عددی معتبر باشد، نتیجه تقسیم نمایش داده میشود. اگر B2 صفر یا خالی باشد، عبارت «قابل محاسبه نیست» نمایش داده میشود.
مثال ۲: نمایش صفر به جای خطا
گاهی در گزارشهای عددی بهتر است به جای خطا، عدد صفر نمایش داده شود تا جمعها و نمودارها بههم نریزند.
=IFERROR(C2/D2, 0)
در این مثال اگر محاسبه با خطا روبهرو شود، خروجی صفر خواهد بود.
مثال ۳: خالی گذاشتن سلول در صورت خطا
در گزارشهای تمیز و مدیریتی، گاهی نمیخواهیم هیچ پیام یا عددی در صورت خطا دیده شود. در این حالت میتوانیم مقدار جایگزین را متن خالی قرار دهیم.
=IFERROR(A2/B2, "")
اگر فرمول خطا داشته باشد، سلول ظاهراً خالی نمایش داده میشود.
مثال ۴: مدیریت خطا در جستجوی کد کالا
فرض کنید در سلول E2 کد کالا را وارد میکنید و میخواهید نام کالا از جدول A2:B100 پیدا شود. اگر کد کالا وجود نداشته باشد، تابع جستجو خطا میدهد. با IFERROR میتوانیم پیام مناسب نشان دهیم.
=IFERROR(VLOOKUP(E2, A2:B100, 2, FALSE), "کالا پیدا نشد")
اگر کد کالا در جدول وجود داشته باشد، نام کالا نمایش داده میشود. اگر وجود نداشته باشد، پیام «کالا پیدا نشد» نمایش داده میشود.
مثالهای کاربردی و واقعی
ترکیب IFERROR با SUM
اگر در یک محدوده چند محاسبه انجام میدهید و میخواهید در صورت خطا، جمع کل صفر شود یا پیام مشخصی نمایش داده شود، میتوانید SUM را داخل IFERROR قرار دهید.
=IFERROR(SUM(A2:A10), 0)
در حالت عادی تابع SUM خطاهای داخل محدوده را نادیده نمیگیرد و اگر سلولی خطادار باشد، ممکن است نتیجه نهایی هم خطا شود. این فرمول کمک میکند خروجی نهایی کنترلشده باشد.
ترکیب IFERROR با AND
فرض کنید میخواهید بررسی کنید آیا فروش از ۱۰ میلیون بیشتر است و تعداد سفارش هم از ۵ بیشتر است یا نه. اگر یکی از مقادیر خطا داشته باشد، به جای خطا عبارت «بررسی نشد» نمایش داده شود.
=IFERROR(AND(A2>10000000, B2>5), "بررسی نشد")
اگر هر دو شرط درست باشند، خروجی TRUE خواهد بود. اگر یکی از شرطها نادرست باشد، FALSE نمایش داده میشود. اگر خطایی در دادهها وجود داشته باشد، پیام «بررسی نشد» نمایش داده میشود.
ترکیب IFERROR با OR
فرض کنید کارمند در صورتی نیاز به بررسی ویژه دارد که یا فروش او کمتر از ۵ میلیون باشد یا تعداد شکایات بیشتر از ۳ باشد. اگر دادهها مشکل داشته باشند، پیام جایگزین نمایش داده میشود.
=IFERROR(OR(A23), "داده نامعتبر است")
اگر حداقل یکی از شرطها درست باشد، TRUE نمایش داده میشود. اگر هیچکدام درست نباشند، FALSE نمایش داده میشود. در صورت بروز خطا، پیام «داده نامعتبر است» نمایش داده میشود.
ترکیب IFERROR با COUNTIF
تابع COUNTIF برای شمارش تعداد سلولهایی استفاده میشود که یک شرط خاص را دارند. اگر محدوده یا شرط دچار مشکل شود، IFERROR میتواند خروجی را مدیریت کند.
=IFERROR(COUNTIF(A2:A100, "تهران"), 0)
این فرمول تعداد ردیفهایی را میشمارد که مقدار آنها برابر «تهران» است. اگر خطایی رخ دهد، عدد صفر نمایش داده میشود.
ترکیب IFERROR با XLOOKUP
تابع XLOOKUP یکی از توابع جدید و قدرتمند برای جستجو است. اگر مقدار مورد نظر پیدا نشود، میتوان با IFERROR پیام دلخواه نمایش داد.
=IFERROR(XLOOKUP(E2, A2:A100, B2:B100), "موردی یافت نشد")
در این مثال مقدار سلول E2 در محدوده A2:A100 جستجو میشود و نتیجه متناظر از محدوده B2:B100 برگردانده میشود. اگر مقدار پیدا نشود یا خطایی رخ دهد، پیام «موردی یافت نشد» نمایش داده میشود.
ترکیب IFERROR با INDEX و MATCH
در نسخههایی که XLOOKUP در دسترس نیست، ترکیب INDEX و MATCH یکی از روشهای رایج جستجو است. با IFERROR میتوان خطاهای پیدا نشدن مقدار را کنترل کرد.
=IFERROR(INDEX(B2:B100, MATCH(E2, A2:A100, 0)), "کد نامعتبر است")
این فرمول مقدار E2 را در محدوده A2:A100 پیدا میکند و مقدار متناظر از محدوده B2:B100 را نمایش میدهد. اگر مقدار پیدا نشود، پیام «کد نامعتبر است» نمایش داده میشود.
ترکیب تابع IFERROR با فرمولهای دیگر
- ترکیب با تقسیم: برای جلوگیری از خطای تقسیم بر صفر
=IFERROR(A2/B2, 0)
- ترکیب با VLOOKUP: برای نمایش پیام مناسب هنگام پیدا نشدن مقدار
=IFERROR(VLOOKUP(E2, A2:C100, 3, FALSE), "یافت نشد")
- ترکیب با XLOOKUP: برای جستجوی حرفهایتر و کنترل خطا
=IFERROR(XLOOKUP(E2, A2:A100, C2:C100), "اطلاعات موجود نیست")
- ترکیب با INDEX و MATCH: برای جستجوی انعطافپذیر در جدولها
=IFERROR(INDEX(C2:C100, MATCH(E2, A2:A100, 0)), "نتیجهای پیدا نشد")
- ترکیب با VALUE: برای تبدیل متن به عدد و مدیریت خطای تبدیل
=IFERROR(VALUE(A2), 0)
- ترکیب با LEFT و VALUE: برای استخراج عدد از ابتدای متن
=IFERROR(VALUE(LEFT(A2, 3)), "قابل تبدیل نیست")
- ترکیب با IF: برای ساخت شرط و کنترل خطا همزمان
=IFERROR(IF(A2>=70, "قبول", "مردود"), "نمره نامعتبر است")
- ترکیب با AVERAGE: برای محاسبه میانگین و جلوگیری از خطا در گزارش
=IFERROR(AVERAGE(A2:A10), 0)
- ترکیب با COUNTIF: برای شمارش شرطی و کنترل خروجی
=IFERROR(COUNTIF(B2:B100, "فعال"), 0)
- ترکیب با FILTER در نسخههای جدید اکسل: برای نمایش پیام هنگام نبود نتیجه
=IFERROR(FILTER(A2:C100, B2:B100="تهران"), "رکوردی یافت نشد")
خطاهای رایج و روش رفع آنها
۱. استفاده بیش از حد از IFERROR و مخفی کردن مشکل اصلی
یکی از اشتباهات رایج این است که کاربران دور همه فرمولها IFERROR قرار میدهند. این کار ممکن است خطاهای واقعی فایل را پنهان کند. مثلاً اگر محدوده اشتباه انتخاب شده باشد یا نام تابع غلط نوشته شده باشد، IFERROR فقط پیام جایگزین را نشان میدهد و شما متوجه مشکل اصلی نمیشوید.
روش رفع: ابتدا فرمول اصلی را بدون IFERROR تست کنید. وقتی مطمئن شدید منطق فرمول درست است، سپس برای زیباتر شدن خروجی از IFERROR استفاده کنید.
۲. نمایش صفر به جای همه خطاها بدون بررسی دلیل خطا
گاهی کاربران در همه موارد مقدار صفر قرار میدهند. این کار در گزارشهای مالی میتواند خطرناک باشد، چون ممکن است خطای واقعی با عدد صفر اشتباه گرفته شود.
روش رفع: اگر صفر از نظر تحلیلی معنی دارد، از آن استفاده کنید. در غیر این صورت بهتر است پیام واضحتری نمایش دهید.
=IFERROR(A2/B2, "نیاز به بررسی")
۳. اشتباه در جداکننده آرگومانها
در بعضی نسخهها و تنظیمات اکسل، جداکننده آرگومانها کاما است و در بعضی دیگر نقطهویرگول. اگر فرمول خطا داد، ممکن است مشکل از همین جداکننده باشد.
روش رفع: اگر فرمول با کاما کار نکرد، نسخه نقطهویرگول را امتحان کنید.
=IFERROR(A2/B2; 0)
۴. فراموش کردن علامت نقلقول برای متن
اگر مقدار جایگزین شما متن است، باید آن را داخل علامت نقلقول قرار دهید. در غیر این صورت اکسل ممکن است آن را نام تعریفشده یا تابع فرض کند و خطا بدهد.
فرمول صحیح:
=IFERROR(A2/B2, "خطا")
۵. استفاده نادرست از سلول خالی
اگر میخواهید در صورت خطا سلول خالی نمایش داده شود، باید از دو علامت نقلقول کنار هم استفاده کنید.
=IFERROR(A2/B2, "")
روش رفع: اگر خروجی خالی میخواهید، مقدار جایگزین را به صورت متن خالی وارد کنید، نه اینکه آرگومان دوم را حذف کنید.
۶. استفاده از IFERROR به جای بررسی دقیق نوع خطا
تابع IFERROR همه خطاها را کنترل میکند. این ویژگی مفید است، اما گاهی شما فقط میخواهید خطای پیدا نشدن مقدار را کنترل کنید و سایر خطاها را ببینید.
روش رفع: در جستجوها اگر فقط خطای نبودن مقدار مهم است، میتوانید به جای IFERROR از IFNA استفاده کنید.
=IFNA(XLOOKUP(E2, A2:A100, B2:B100), "یافت نشد")
۷. قرار دادن فرمول اشتباه در آرگومان دوم
آرگومان دوم هم میتواند فرمول باشد. اگر آن فرمول خودش خطا داشته باشد، ممکن است خروجی همچنان خطا شود.
روش رفع: اگر آرگومان دوم فرمول پیچیدهای دارد، آن را جداگانه تست کنید یا یک IFERROR دوم برای آن در نظر بگیرید.
=IFERROR(A2/B2, IFERROR(C2/D2, 0))
نکات حرفهای و ترفندهای مهم
- قبل از استفاده از IFERROR، ابتدا فرمول اصلی را بررسی کنید تا مطمئن شوید خطای واقعی را پنهان نمیکنید.
- برای گزارشهای مدیریتی، به جای نمایش خطاهای اکسل، از پیامهای فارسی و قابل فهم استفاده کنید.
- اگر خروجی شما در محاسبات بعدی استفاده میشود، بهتر است در صورت خطا عدد مناسب مثل صفر برگردانید.
- اگر خروجی فقط برای نمایش است، میتوانید متن خالی یا پیام راهنما نمایش دهید.
- در جستجوها، اگر فقط خطای پیدا نشدن مقدار مهم است، استفاده از IFNA میتواند دقیقتر از IFERROR باشد.
- در داشبوردها، IFERROR به تمیزتر شدن کارتهای عددی، نمودارها و جدولهای خلاصه کمک میکند.
- از پیامهای خیلی عمومی مثل «خطا» کمتر استفاده کنید. پیامهایی مثل «کد کالا یافت نشد» یا «تعداد نامعتبر است» برای کاربر مفیدترند.
- در فایلهای مالی حساس، همیشه مراقب باشید IFERROR باعث مخفی شدن خطاهای مهم نشود.
- برای خوانایی بهتر، فرمولهای طولانی را در چند مرحله و با ستون کمکی بسازید.
- در نسخههای جدید اکسل، میتوانید IFERROR را با XLOOKUP، FILTER، LET و توابع داینامیک ترکیب کنید.
- اگر هدف شما کنترل فقط یک نوع خطا است، تابع تخصصیتر را انتخاب کنید؛ مثلاً IFNA برای خطای #N/A مناسبتر است.
- اگر میخواهید فرمول شما برای کاربران دیگر قابل فهم باشد، مقدار جایگزین را توضیحی انتخاب کنید نه مبهم.
تفاوت تابع IFERROR با توابع مشابه
تفاوت IFERROR با IF
تابع IF برای بررسی یک شرط منطقی استفاده میشود، اما IFERROR برای بررسی خطا در یک فرمول به کار میرود. یعنی IF میپرسد «آیا شرط درست است؟»، اما IFERROR میپرسد «آیا این فرمول خطا دارد؟».
مثال تابع IF:
=IF(A2>=70, "قبول", "مردود")
مثال تابع IFERROR:
=IFERROR(A2/B2, "خطا در محاسبه")
تفاوت IFERROR با ISERROR
تابع ISERROR فقط بررسی میکند که آیا یک مقدار خطا هست یا نه و خروجی TRUE یا FALSE میدهد. اما IFERROR هم خطا را بررسی میکند و هم مقدار جایگزین را نمایش میدهد.
مثال با ISERROR:
=ISERROR(A2/B2)
مثال مشابه با IFERROR:
=IFERROR(A2/B2, "خطا")
تفاوت IFERROR با IFNA
تابع IFNA فقط خطای #N/A را مدیریت میکند. این خطا معمولاً زمانی رخ میدهد که مقدار مورد نظر در جستجو پیدا نشود. اما IFERROR تقریباً همه خطاهای رایج اکسل را مدیریت میکند.
مثال با IFNA:
=IFNA(XLOOKUP(E2, A2:A100, B2:B100), "یافت نشد")
مثال با IFERROR:
=IFERROR(XLOOKUP(E2, A2:A100, B2:B100), "خطا یا عدم وجود داده")
اگر میخواهید فقط نبودن مقدار در جستجو را کنترل کنید، IFNA انتخاب دقیقتری است. اما اگر میخواهید همه خطاها را پوشش دهید، IFERROR مناسبتر است.
تفاوت IFERROR با IF و ISERROR به صورت ترکیبی
قبل از معرفی IFERROR، کاربران معمولاً از ترکیب IF و ISERROR استفاده میکردند. این روش طولانیتر و کمخواناتر است.
روش قدیمی:
=IF(ISERROR(A2/B2), "خطا", A2/B2)
روش سادهتر با IFERROR:
=IFERROR(A2/B2, "خطا")
روش دوم کوتاهتر، خواناتر و حرفهایتر است.
سازگاری با نسخههای مختلف اکسل
تابع IFERROR از اکسل 2007 به بعد در دسترس است. بنابراین در بیشتر نسخههای رایج اکسل، از جمله Excel 2010، Excel 2013، Excel 2016، Excel 2019، Excel 2021 و Microsoft 365 پشتیبانی میشود.
- Excel 2007 و نسخههای جدیدتر: پشتیبانی از IFERROR وجود دارد.
- Excel 2003 و نسخههای قدیمیتر: تابع IFERROR در دسترس نیست.
- Microsoft 365: پشتیبانی کامل دارد و میتوان آن را با توابع جدید مثل XLOOKUP، FILTER و LET ترکیب کرد.
- Excel Online: از IFERROR پشتیبانی میکند.
- Google Sheets: تابع IFERROR را پشتیبانی میکند، اما ممکن است جداکننده آرگومانها بسته به زبان فایل متفاوت باشد.
اگر با فایلهای قدیمی Excel 2003 کار میکنید، باید از ترکیب IF و ISERROR استفاده کنید.
=IF(ISERROR(A2/B2), 0, A2/B2)
سؤالات پرتکرار درباره تابع IFERROR
آیا IFERROR فقط خطای تقسیم بر صفر را کنترل میکند؟
خیر. IFERROR خطاهای مختلفی مثل #DIV/0!، #N/A، #VALUE!، #REF!، #NAME?، #NUM! و #NULL! را کنترل میکند.
آیا میتوان در صورت خطا سلول را خالی نشان داد؟
بله. کافی است مقدار جایگزین را متن خالی قرار دهید.
=IFERROR(A2/B2, "")
آیا استفاده زیاد از IFERROR خوب است؟
همیشه نه. IFERROR ظاهر گزارش را بهتر میکند، اما اگر بدون دقت استفاده شود، ممکن است خطاهای مهم را پنهان کند. بهتر است ابتدا دلیل خطا را بررسی کنید و سپس از IFERROR استفاده کنید.
برای جستجو بهتر است از IFERROR استفاده کنیم یا IFNA؟
اگر فقط میخواهید خطای پیدا نشدن مقدار را مدیریت کنید، IFNA گزینه دقیقتری است. اما اگر میخواهید هر نوع خطایی کنترل شود، IFERROR مناسبتر است.
آیا آرگومان دوم IFERROR میتواند فرمول باشد؟
بله. مقدار جایگزین میتواند عدد، متن، سلول خالی یا حتی یک فرمول دیگر باشد.
=IFERROR(A2/B2, C2/D2)
آیا IFERROR باعث سریعتر شدن فایل اکسل میشود؟
خیر، هدف اصلی IFERROR افزایش سرعت نیست. اما میتواند از نمایش خطاهای مزاحم جلوگیری کند. در فایلهای بسیار بزرگ، استفاده زیاد و غیرضروری از فرمولهای پیچیده همراه با IFERROR ممکن است روی عملکرد اثر بگذارد.
چرا فرمول IFERROR من کار نمیکند؟
دلایل رایج شامل اشتباه در جداکننده آرگومانها، فراموش کردن نقلقول برای متن، اشتباه در فرمول اصلی یا استفاده از نسخه بسیار قدیمی اکسل است.
آیا IFERROR در اکسل فارسی هم کار میکند؟
بله. نام تابع همچنان IFERROR است، اما بسته به تنظیمات ویندوز و اکسل ممکن است لازم باشد بین آرگومانها به جای کاما از نقطهویرگول استفاده کنید.
=IFERROR(A2/B2; "خطا")
جمعبندی و پیشنهاد یادگیری بعدی
تابع IFERROR یکی از مهمترین ابزارهای اکسل برای مدیریت خطاها و حرفهایتر کردن گزارشهاست. با این تابع میتوانید به جای نمایش خطاهای فنی و نامفهوم، مقدار یا پیام دلخواه نمایش دهید. این موضوع مخصوصاً در گزارشهای مدیریتی، داشبوردها، فایلهای فروش، فرمهای محاسباتی و جستجوهای اطلاعاتی بسیار کاربردی است.
مهمترین کاربردهای IFERROR شامل کنترل خطای تقسیم بر صفر، مدیریت خطا در جستجوها، نمایش صفر یا سلول خالی به جای خطا و ساخت فرمولهای خواناتر است. با این حال، باید دقت کنید که IFERROR را برای پنهان کردن مشکلات واقعی فایل استفاده نکنید. ابتدا دلیل خطا را پیدا کنید و سپس برای بهبود خروجی، از IFERROR کمک بگیرید.
برای یادگیری بهتر بعد از IFERROR، پیشنهاد میشود توابع زیر را هم یاد بگیرید:
- تابع IF برای شرطگذاری
- تابع IFNA برای مدیریت خطای پیدا نشدن مقدار
- تابع VLOOKUP برای جستجوی کلاسیک
- تابع XLOOKUP برای جستجوی پیشرفته در نسخههای جدید اکسل
- تابع INDEX و MATCH برای جستجوی انعطافپذیر
- تابع ISERROR برای بررسی وجود خطا
- تابع FILTER برای فیلتر کردن دادهها در اکسلهای جدید
اگر میخواهید فرمولهای شما حرفهایتر، تمیزتر و قابل فهمتر شوند، یادگیری و استفاده درست از IFERROR یکی از بهترین قدمهاست.
