تابع IF
تابع IF در اکسل، یک تابع منطقی است که امکان بررسی یک شرط را فراهم میکند.
در صورت درست بودن شرط، یک مقدار مشخص را برمیگرداند و در غیر این صورت، مقدار دیگری را.
این کمک میکند که تا بتوانیم دادههای ورودی تابع را به اطلاعاتی مفید برای تصمیمگیری تبدیل کنیم.
در ادامه این مقاله، ابتدا کاربرد مفهومی تابع IF در تصمیمگیری را بیان خواهیم کرد. سپس با نحوه نوشتن تابع IF آشنا شوید و در ادامه مثالهای بیشتری از کار با این تابع را خواهید دید.
اما اول بیایید یک تصویر کلی از کاربرد IF در ذهن خود ترسیم کنیم.
کاربرد تابع IF در مدلهای تصمیمگیری
? فرض کنید که در یک شرکت میخواهیم بینیم آیا انجام یک پروژه به صرفه است یا خیر.
برای این کار:
- دادههای مالی پروژه را گردآوری میکنیم.
- شاخصهای مالی را تعریف کرده و حساب میکنیم. (مثلاً شاخص سود).
- حالا میتوانیم یک تابع شرطی (IF) داشته باشیم که: اگر سود مالی پروژه بزرگتر از صفر بود، آنگاه اکسل در خروجی تابع به ما بگوید که "پروژه سودآوری دارد" و در غیر این صورت بگوید که "پروژه توجیه اقتصادی ندارد".
هنگامی که دارید تابع IF را مینویسید، باید بتوانید عبارت قبلی را در ذهن خود بسازید. چیزی شبیه این:
اگر A، آنگاه B، وگرنه C.
✅ وقتی تابع IF را مینویسیم، در واقع به کمک تعریف یک شرط (که نتیجه آن یا درست یا غلط است یا همان A) و نیز تعیین خروجی تابع (برای هر دو حالت درست و غلط یا همان B و C)، توانستهایم شاخص مالی پروژه (که یک مقدار عددی است) را به اطلاعاتی مفید برای تصمیمگیری تبدیل کنیم.
? یادآوری میکنیم که وقتی مقدار شرط درست باشد میگوییم ارزش شرط TRUE است (معادل انگلیسی کلمه "درست یا صحیح") و اگر نادرست باشد میگوییم عبارت شرطی FALSE بوده است (معادل انگلیسی "نادرست یا غلط").
حالا بیایید ساختار تابع IF را با هم مرور کنیم.
نحوه نوشتن تابع IF
تابع IF به شکل زیر نوشته میشود:
=IF(logical_test, value_if_true, value_if_false)
ورودیهای تابع IF که در فرمول بالا مشخص شدهاند، به شرح زیر هستند:
- logical_test: شرطی که باید توسط اکسل تست شود (که درست است یا غلط)
- value_if_true: مقداری که باید در صورت درستی شرط بازگردانده شود.
- value_if_false: مقداری که باید در صورت نادرستی شرط بازگردانده شود.
در مثال "ارزیابی صرفه اقتصادی پروژه" که در بخش قبلی مطرح کردیم، میتوانیم ورودیها را به شرح زیر داشته باشیم:
- شرط: "سود مالی پروژه بزرگتر از صفر است" (که بر اساس اطلاعات مالی میتواند درست یا غلط باشد)
- خروجی تابع اگر شرط درست باشد: "پروژه سودآوری دارد"
- خروجی تابع اگر شرط غلط باشد: "پروژه توجیه اقتصادی ندارد"
اگر به تابع IF از نظر مفهوم ریاضی آن توجه کنیم، میتوانیم ورودیها و خروجی این تابع را به شکل زیر نشان دهیم:
تصویر فوق را میتوانید اینطور بخوانید:
تابع IF در اکسل، یک عبارت منطقی را تست میکند (logical_test)، اگر آن عبارت منطقی صحیح (TRUE) بود، مقدار تعیین شده برای حالت درست (value_if_true) را برمیگرداند و اگر آن عبارت غلط بود، مقدار تعیین شده برای حالت غلط (value_if_false) را برمیگرداند.
بنابراین در نهایت هر شرطی که شما مینویسید قرار است پس از ارزیابی به TRUE یا FALSE تبدیل شود و سپس اکسل بر آن اساس تصمیم میگیرد که کدام مقدار را در خروجی بنویسد: value_if_true بنویسد یا value_if_false.
توجه داشته باشید که:
- به هر کدام از ورودیها، آرگومان نیز گفته میشود.
- نوشتن logical_test اجباری است (و در تصویر فوق هم رنگ آن فرق دارد!).
- در مورد سایر ورودیها، اگر یکی را نوشتید، دیگری اختیاری است. یعنی اینکه حتماً یکی از دو مقدار value_if_true یا value_if_false را باید بنویسید ولی میتوانید دیگری را ننویسید.
- هر کدام از ورودیها را میتوان به شکل یک مقدار ثابت (عدد یا متن)، ارجاع به یک سلول دیگر و یا یک متغیر (تعریف شده در اکسل) وارد کرد. همچنین امکان نوشتن فرمول برای هر کدام از آنها وجود دارد.
در ادامه ابتدا نحوه نوشتن بخش logical_test را بررسی میکنیم و سپس چند مثالهایی از تابع IF ارائه خواهیم کرد.
نوشتن بخش شرط یا logical_test
اولین چیزی که در مورد نوشتن تابع IF مطرح است، نوشتن شرط یا logical_test است (منظور عبارتی منطقی است که قرار است صحت آن توسط اکسل تست شود).
توجه داشته باشید که اگر بخواهید فقط یک شرط را به تنهایی بنویسید (خارج از تابع IF)، لازم است قبل آن شرط یک "=" قرار دهید که اکسل متوجه شود شما در حال نوشتن یک فرمول هستید. طبیعتاً اگر اشتباهی در نوشتن نداشته باشیم، خروجی یک شرط، TRUE یا FALSE خواهد بود (معادل 1 یا صفر).
حالا بیایید با یک شرط ساده شروع کنیم:
فرض کنید در سلول A1 از کاربرگ اکسل، عدد 15 قرار گرفته است و میخواهیم ببینیم که آیا عدد 15 (مقدار سلول A1) بزرگتر از 10 هست یا نه.
کافی است در سلولی دیگر از آن کاربرگ اکسل، این فرمول را بنویسیم:
=A1>10
چون عدد 15 بزرگتر از 10 است، پس عبارت شرطی A1>10 یک عبارت درست است. پس نتیجه فرمول بالا TRUE خواهد بود.
به عبارت دیگر ارزش شرط A1>10 معادل TRUE یا صحیح است. کاری که تا اینجا انجام دادیم، نوشتن یک شرط با عملگرهای منطقی بود.
استفاده از عملگرهای منطقی برای نوشتن شرط
همانطور که در مثال قبل دیدید، تابع IF از عملگرهای منطقی (>، <، <>، =) هنگام نوشتن شرط پشتیبانی می کند.
جدول زیر برخی از نمونه های رایج را نشان می دهد:
در جدول فوق، مقادیر متنی باید در داخل گیومه دوتایی ("") قرار بگیرند، اما اعداد نیازی به این کار ندارند. البته کاملاً خالی بودن (empty بودن) یک سلول متفاوت است با ("")، اما در اینجا برای پیچیده نشدن موضوع به آن نمیپردازیم.
ترکیب توابع منطقی برای نوشتن شرط
برای نوشتن logical_test میتوان ترکیب توابع شرطی (AND، OR و…) استفاده کرد.
به عنوان مثال، میخواهیم بررسی کنیم که آیا یک عدد در محدوده 1 تا 100 قرار دارد یا خیر. برای این کار، میتوانیم از فرمول زیر استفاده کنیم:
=AND(A1>=1, A1<=100)
در این مثال از دستور AND استفاده کردهایم که بررسی میکند آیا A1 بزرگتر مساوی 1 و همزمان A1 کوچکتر مساوی است یا نه.
نوشتن دو ورودی دیگر تابع IF
حالا که اولین بخش تابع IF را نوشتیم، برای تکمیل تابع IF لازم است که حداقل یک مورد از دو ورودی دیگر (یعنی value_if_true یا value_if_false) را بنویسیم.
این دو ورودی قرار است یک value یا مقدار را به اکسل بدهند که اکسل بتواند پس از ارزیابی شرط، یکی از آن دو را در خروجی به ما تحویل دهد.
در سادهترین حالت این مقدارها میتوانند عدد ثابت یا متن باشند.
اما شما میتوانید از ارجاع به سلول دیگر، ارجاع به یک متغیر تعریف شده در اکسل و حتی فرمولی دیگر دیگر استفاده کنید که در همه این موارد باز هم در واقع دارید یک مقدار عددی یا متنی را به جای دو متغیر value_if_true و value_if_false مینویسید.
چون تابع IF در نهایت یکی از دو مقدار value_if_true یا value_if_false را در خروجی ارائه میدهد پس در نهایت خروجی تابع IF عملاً متن یا عدد است.
?اگر شما یکی از دو ورودی را ننویسید و تابع IF در وضعیتی قرار بگیرد که مقداری نداشته باشد که در خروجی قرار دهد، متناسب با نتیجه ارزیابی شرط مقدار TRUE یا FALSE را در خروجی مینویسد. از آنجایی که در اکسل مقدار TRUE و FALSE به ترتیب معادل عدد 1 و صفر است، پس در این حالت خروجی یک عدد خواهد بود (با این که ممکن است به خاطر فرمت سلول، ظاهراً عبارت TRUE یا FALSE را ببینید).
✅✅ تا اینجا با کلیت مفهوم تابع IF در اکسل آشنا شدید. در ادامه مثالهایی از تابع IF را خواهید دید:
شکل ساده نوشتن تابع IF
در اینجا دو مثال از تابع IF آوردهایم که در یکی خروجی تابع متن و در دیگری عدد است.
مثال اول با خروجی متن: وضعیت دانشجو
فرض کنید نمره یک دانشجو در سلول A1 از کاربرگ اکسل قرار داده شده است. میخواهیم بدانیم که آیا این دانشجو درس خود را پاس کرده است یا نه. در این صورت میتوانیم از فرمول زیر استفاده کنیم:
=IF(A1>=10,"Pass","Fail")
در فرمول بالا:
- اگر محتوای سلول A1 عددی بزرگتر یا مساوی 10 باشد، مقدار خروجی عبارت Pass خواهد بود (دانشجو درس را پاس کرده است).
- اگر هم مقدار درون سلول A1 کمتر از 10 باشد، خروجی فرمول Fail خواهد بود (دانشجو درس را افتاده است).
حالا فرمولی داریم که میتوانیم به کمک آن، برای همه دانشجویان بگوییم که درس را پاس کردهاند یا نه. کافی است نمرههای دانشجویان را در ستون A قرار دهیم و فرمول را برای سایر دانشجویان کپی کنیم.
مثال دوم با خروجی عددی: مقدار تخفیف
فرض کنید در یک جدول، قیمت محصولات در ستون A ثبت شده است. میخواهیم با استفاده از تابع IF، فرمولی بنویسیم که در آن درصد تخفیف برای محصولاتی که قیمت آنها بیشتر از 10000 تومان است برابر 20 درصد باشد و در غیراینصورت 5 درصد باشد. برای این کار، میتوانیم از فرمول زیر استفاده کنیم:
=IF(A1>10000,A1*0.2,A1*0.05)
در این حالت ما برای نوشتن ورودیهای تابع IF، (به جای مقدار ثابت) از فرمولنویسی استفاده کردهایم.
فرمول فوق برای سلول A1 نوشته شده است و میتوان آن برای سلولهای بعدی کپی کرد.
توابع تودرتو IF
اگر ورودیهای تابع IF خودشان فرمول باشند و خود آن فرمولها نیز از IF های دیگری تشکیل شده باشند به مفهوم توابع IF تودرتو (یا اصطلاحاً Nested) میرسیم.
در این حالت، به عنوان مثال خروجی یک تابع IF داخلی میتواند به عنوان شرط (یا مقدار) تابع IF بیرونی استفاده میشود.
در ادامه این موضوع را با چند مثال نشان میدهیم:
تعیین محدودهی مقدار ورودی با IF تودرتو
گاهی لیستی از محدودههای عددی داریم که از کوچک به بزرگ مرتب شدهاند. حالا میخواهیم بدانیم که یک مقدار ورودی در کدام محدوده از مقادیر قرار میگیرد.
برای این حالت میتوانیم از تابع IF به شکل تودرتو استفاده کنیم. مثال زیر را در نظر بگیرید:
=IF(A1>10, IF(A1>20, "بالاتر از 20", "بالاتر از 10"), "کمتر یا مساوی 10")
در این فرمول:
- در صورتی که مقدار سلول A1 بزرگتر از 20 باشد، مقدار "بالاتر از 20" را برمیگرداند.
- در صورتی که مقدار سلول بزرگتر از 10 باشد، مقدار "بالاتر از 10" را برمیگرداند.
- و در غیراینصورت "کمتر یا مساوی 10" را برمیگرداند.
نمرهدهی کیفی A تا F با تابع IF تودرتو
فرض کنید که میخواهیم در یک جدول، نمره دانشآموزان را با حروف A تا D ارزیابی کنیم. برای این کار، میتوانیم از تابع IF به صورت زیر استفاده کنیم:
=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C",IF(B2>=60,"D","F"))))
در این فرمول، ابتدا این شرط بررسی میشود که آیا نمره دانشآموز در سلول B2 حداقل 90 است.
- اگر این شرط برقرار باشد، مقدار "A" برگردانده میشود.
- در غیر این صورت، شرط بعدی بررسی میشود که آیا نمره دانشآموز حداقل 80 است.
- اگر این شرط نیز برقرار باشد، مقدار "B" برگردانده میشود و الی آخر.
ارزیابی میزان فروش محصولات با تابع IF تودرتو
فرض کنید در یک جدول، مقدار فروش محصولات مختلف در یک بازه زمانی مشخص ثبت شده است. میخواهیم محدوده فروش هر محصول را به صورت زیر تعیین کنیم:
?اگر فروش محصول کمتر از 1000 باشد، محدوده آن «ضعیف» باشد.
?اگر فروش محصول بین 1000 تا 5000 باشد، محدوده آن «متوسط» باشد.
?اگر فروش محصول بیشتر از 5000 باشد، محدوده آن «قوی» باشد.
ما در اینجا فرمول را برای یک سلول مینویسیم. بعداً میتوان فرمول را برای سایر مقادیر کپی کرد. در اینجا فرض کنید که A1 سلول حاوی مقدار فروش محصول مورد نظر است.
برای این کار، میتوانیم از فرمول زیر استفاده کنیم:
=IF(A1<1000,"ضعیف",IF(A1>=1000,IF(A1<=5000,"متوسط","قوی")))
جمعبندی
- تابع IF یکی از توابع قدرتمند اکسل است که میتواند در طیف وسیعی از کاربردها مورد استفاده قرار گیرد.
- شرط تابع IF باید یک عبارت منطقی باشد. عبارت منطقی عبارتی است که مقدار TRUE یا FALSE را برمیگرداند.
- مقادیر value_if_true و value_if_false میتوانند مقادیر عددی، متن، فرمول یا مقادیر منطقی باشند.
- میتوان از تابع IF برای انجام تستهای منطقی پیچیدهتر نیز استفاده کرد. برای این کار، میتوان از عملگرهای منطقی مانند AND، OR و NOT استفاده کرد.
- میتوان از تابع IF برای ایجاد توابع ترکیبی یا تودرتو نیز استفاده کرد. برای این کار، میتوان از تابع IF در داخل تابع IF دیگر استفاده کرد.
- این تابع در ساخت مدلهای تصمیمگیری (یا حتی تمیز کردن دادهها) میتواند کاربرد داشته باشد. در واقع شما میتوانید ماشینی بسازید که در تصمیمگیری استفاده شود.