✔ ما برترین «کتاب فرمول نویسی و توابع  اکسل» را ترجمه کرده‌ایم و همچنین دوره «ساخت گزارش‌های مدیریتی با Pivot Table» را ساخته‌ایم تا 
مسیر یادگیری و تسلط شما بر نرم افزار قدرتمند اکسل هموار گردد.

همچنین مشتاقیم smiley تا «دوره‌های تخصصی اکسل»  را برای شما و سایر همکارانتان - به صورت سازمانی - برگزار نمائیم.

آموزش تابع شرطی IF در اکسل

گذاشتن شرط در اکسل با تابع IF بسیار پر کاربرد است و اتفاقا اکثر کاربران تازه کار اکسل با آن کمی مشکل دارند.

به نظر من مشکل اصلی آنها در 2 چیز است، اول آنکه خود تابع را دقیق درک نکرده اند و دوم آنکه تمرین کافی نمی کنند تا یکبار برای همیشه IF را یاد بگیرند.

 

جملات شرطی چه در اکسل باشد و چه در زبان روزمره دارای سه قسمت است که با حوصله می خواهم تک به تک این قسمت ها را برای شما شرح دهم:

 

قسمت اول تابع IF  - مقایسه

در هر جمله شرطی ما معمولا در ابتدا یک مقایسه می کنیم به عنوان مثال:

* می گوییم که اگر معدل تو بالای 18 شود.  (معدل با عدد 18 مقایسه می شود.

* می گوییم که اگر هوا بارانی بود . (وضعیت هوا با بارانی بودن مقایسه می شود)

* اگر بعد از ساعت 8 کارت بزنی  (ساعت ورود با عدد 8 صبح مقایسه می شود)

* اگر حقوق تو بالای 1500000 تومان باشد ( مبلغ حقوق شما با مبنای 15000000 مقایسه می شود)

در همه مثال های بالا می بینید که چیزی با چیزی مقایسه می شود. بنابراین اولین قسمت یک جمله شرطی یا تابع IF در اکسل ، یک مقایسه خواهد بود.

 

قسمت دوم تابع IF - یک اتفاق

قسمت دوم جملات شرطی به ما می گوید که اگر پاسخ قسمت اول "درست از آب درآمد" چه اتفاقی باید بیافتد. و معمولا در فارسی از واژه "آنگاه" ، "اونوقت" و سپس بیان آن "اتفاق" استفاده می کنیم:

*  که اگر معدل تو بالای 18 شود آونوقت "برایت پلی استیشن می خرم"

* می گوییم که اگر هوا بارانی بود آنگاه "چترت را ببر"

* اگر بعد از ساعت 8 کارت بزنی  آنگاه "کسر کار خواهی خورد"

* اگر حقوق تو بالای 1500000 تومان باشد اونوقت "باید مالیات بدهی"

 

قسمت سوم تابع IF - یک اتفاق

قسمت سوم تابع IF در اکسل یا هر جمله شرطی به ما می گوید که اگر پاسخ مقایسه "درست از آب در نیامد"، چه اتفاقی باید بیافتد. معمولا در فارسی این قسمت بعد از واژه "وگرنه" و "در غیر اینصورت" بیان می شود:

*  که اگر معدل تو بالای 18 شود آونوقت "برایت پلی استیشن می خرم" وگرنه "دوچرخه ات رو هم می گیرم"

* می گوییم که اگر هوا بارانی بود آنگاه "چترت را ببر" در غیراینصورت "کلاه تابستانیت را ببر"

* اگر بعد از ساعت 8 کارت بزنی  آنگاه "کسر کار خواهی خورد" وگرنه "مشکلی نیست"

* اگر حقوق تو بالای 1500000 تومان باشد اونوقت "باید مالیات بدهی" و در  غیر اینصورت "مشمول مالیات نیستی"

خلاصه و جمع بندی

پس یک جمله شرطی دارای سه قسمت است :

1) مقایسه

2) اتفاقی(یا کار یا محاسبه ای) که اگر پاسخ مقایسه درست بود باید رخ دهد.

3) اتفاقی(یا کار یا محاسبه ای) که اگر پاسخ مقایسه درست نبود باید رخ دهد.

عکس زیر اینها را به صورت خلاصه برای مثال هوای بارانی به شما نشان می دهد:

تابع شرطی if در اکسل

 

شکل کلی تابع IF در اکسل

تابع IF در اکسل سه ورودی دارد و ورودی ها با علامت کاما از هم جدا می شوند:

IF( ... , ... , ....)

این سه ورودی عبارتند از :

IF( Yk ebarat sharti , har formuli  , har formuli)

در قسمت اول IF باید "یک عبارت شرطی" را بنویسید و در درس 1 گفتیم که عبارات شرطی یعنی چیزی با چیزی مقایسه شود و هر پس از انجام مقایسه یا پاسخ ما صحیح (True) می شود و یا غلط از آب در می آید (False).

مثلا می خواهیم بدانیم که آیا حقوق شما مشمول مالیات هستید یا خیر. برای اینکار باید حقوق شما را در سلول A1 می نویسیم و با حداقل حقوق تصویبی برای مالیات مقایسه کنیم  بنابراین قسمت اول IF به شکل زیر خواهد شد:

IF( A1 > 15000000 , ...  , ...)

در قسمت دوم IF هر فرمولی و یا هر محاسبه ای و یا هر چیزی که اکسل می فهمد چشمک را  آن بنویسید. و این مقدار وقتی محاسبه می شود که پاسخ شرط شما "TRUE" شود و اگر پاسخ شرط شما FALSE شود، این محاسبه هرگز انجام نمی شود.

در این مثال ما 10% مبلغ حقوق را به عنوان مالیات محاسبه می کنیم و اگر حقوق بیش از 15000000 باشد، این محاسبه انجام می شود و به عنوان پاسخ فرمول IF نمایش داده می شود.

IF( A1 > 15000000 , A1*10%  , ...)

قسمت سوم IF ، می تواند دقیقا مانند قسمت دوم هر فرمول اکسلی باشد، و اگر پاسخ شرط شما FALSE شود، این محاسبه انجام می شود و به خروجی  IF نمایش داده می شود .

در این مثال می خواهیم که مالیات حقوق زیر 15000000 عدد صفر باشد.

IF( A1 > 15000000 , A1*10%  ,  0 )

به همین سادگی در اکسل یک IF نوشته می شود.

 

تابع شرطی if در اکسل

و می توانیم این فرمول را اینگونه بخوانیم:

"اگر مبلغ حقوق (یا سلول A1) بیشتر از 15000000  بود آنگاه باید 10% مبلغ حقوق را مالیات بدهی و گرنه مالیاتت صفر خواهد شد".

 

نکته 1: در هر سلولی که IF را بنویسید ، در همان سلول خروجی (یا پاسخ) IF را مشاهده خواهید کرد.
نکته 2: فقط خروجی تابع IF می تواند یک مقدار باشد و نمی تواند رنگ و ... باشد. اگر بخواهید که سلول ها را بر اساس یک شرط رنگی کنید، از ابزار Conditional Formatting اکسل استفاده نمایید.
نکته 3: اگر زبان کامپیوتر شما در CONTROL PANEL بر روی فارسی باشد، شما باید در فرمول ها به جای علامت کاما از علامت سمی کالن ";" استفاده نمایید.

 

دیدگاه‌ها

به این مطلب پاسخ دهید

من، خودم در تاریخ 17 آذر 1396 نوشته:

با سلام و تشکر فراوان
درلیستی که در اختیار داریم برای آقایان کد 1 و برای خانم ها کد 0 وارد شده است. می خواهیم در ارسال پیامک بازای کد 1 کلمه <آقای> و بازای کد 0 کلمه <سرکار خانم> درج شود. آیا می توان از تابع IF استفاده کرد؟ لطفا راهنمائی بفرمائید.

فرشید میدانی در تاریخ 17 آذر 1396 نوشته:

درود، بله به سادگی فرمول زیر را بکار ببرید:

=IF( A1=1 , "agha" , "khanoom")

و یا کد زیر هم در این موارد بکار می رود:

=CHOOSE( A1+1 , "khanoom" , "agha" )

(در فرمولها شما به از واژه های فارسی آقا و خانم استفاده کنید)

 

Narges Ameri در تاریخ 31 فروردين 1399 نوشته:

سلام من دقیقا فرمول شما رو وارد کردم ارور تو ماچ آرگیومنت میده. میخوام برام در سلول H، مشخص کند در ستون g نمرات زیر 10 رو مردود و نمرات بالای 10 رو قبول بزنه

("IF(G2:G14>10,"ghabool","mardod=

Rou@ در تاریخ 29 بهمن 1396 نوشته:

با سلام
میخوام تو سلول N8فرمولی بنویسم که اگه تفاضل k8-H8 کوچکتر از صفر بود فقط نشان داده شود میشه لطفا راهنمایی کنید این فرمول رو برام بنویسید
با تشکر

حسين روستا در تاریخ 5 ارديبهشت 1397 نوشته:

لطفا بفرماييد چگونه ميتوان رنگ سلو ل را برحسب درستي يانادرستي سلول تعيين كرد

حجت در تاریخ 4 اسفند 1398 نوشته:

باید از تابع CONDITIONAL FORMATTING استفاده کرد

حمید زندی در تاریخ 29 خرداد 1399 نوشته:

عالی

رضا در تاریخ 21 ارديبهشت 1397 نوشته:

با سلام و تشکر فراوان
یه فرمی داریم که می خواییم بر اساس تاریخ امروز 6 ماه آینده را محاسبه کند و کاری انجام شود ، (اگر انجام شد به ما نمایش بدهد که انجام شد و اگر انجام نشد هم نمایش بدهد) و از یک ماه قبل از رسیدن به تاریخ مقرر به ما اعلام کند .
آیا می توان از تابع IF استفاده کرد؟ لطفا راهنمائی بفرمائید.

شمسی در تاریخ 24 ارديبهشت 1397 نوشته:

در ستون اول اعدادی دارم که کد هستند 10 کد دارم. حالا میخواهم بر اساس هر کد یک نام بنویسم .چگونه میتوانم این کار را انجام دهم .

فرشید میدانی در تاریخ 26 ارديبهشت 1397 نوشته:

روش صحیح و سریع اینکار استفاده از Vlookup است . لطفا مقاله آنرا در همین وب سایت مطالعه نمایید.

سعيد در تاریخ 5 خرداد 1397 نوشته:

با سلام واحترام
لطفا راهنمايي بفرمائيد در خصوص شرط جهت جمله زير
اگر متراژ ملك از 0تا 50 متر مربع باشدضرب در عدد 2 .ضرب در قيمت اگر متراژ ملك از 50 تا 100 باشد ضرب در عدد 3 ضرب در قيمت و ........

فرشید میدانی در تاریخ 5 خرداد 1397 نوشته:

این سناریوها را با VLOOKUP بسیار ساده تر می توانید حل کنید . فعلا مقاله VLOOKUPرا در همین سال بخوانید.

سوگند در تاریخ 10 مرداد 1397 نوشته:

سلام
من میخواستم یه فرمولی بنویسم که داخل یه جدول فقط سلولهایی که روبه روشون عدد نوشت شده در شیت بعدی نمایش داده بشن،از چه فرمولی باید استفاده کنم؟

فرشید میدانی در تاریخ 27 مرداد 1397 نوشته:

سوال شما حالت های بسیاری دارد و پاسخ به آن بستگی به فایل دارد. اما کلا هر وقت که خواستید دادهایی را از یک شیت در شیت دیگری بخوانید ، روش درست آن استفاده از تابع vlookup است. مقاله vlookup را در سایت بخوانید.

شرکت تولید اسپان لس در تاریخ 24 مرداد 1397 نوشته:

با سلام
می خواهم در جدولی موجودی انبارم کمتر از 2عدد شد آلارم دریافت کنم.امکانش هست توضیح دهید

فرشید میدانی در تاریخ 27 مرداد 1397 نوشته:

اکسل چیزی مانند outlook به عنوان آلارم و .. ندارد . بهترین و ساده ترین کار آن است که از conditional formatting ها برای رنگی کردن و .. استفاده کنید. فایل پی دی اف conditional formatting ها را می توانید از سایت دریافت کنید.

صالح در تاریخ 20 شهريور 1397 نوشته:

با سلام من دنبال تابع میگردم که در یک ستون اعداد دارم اگر در عدد سلول برابر ان قسمت از ستون بود درست بگه وگرنه غلط بگه

فرشید میدانی در تاریخ 26 شهريور 1397 نوشته:

این یک IF بسیار ساده است که در این مقاله دقیقا آن را آموزش داده ایم.

eglima در تاریخ 28 بهمن 1397 نوشته:

با سلام
چطور میشه حروفات فارسی را ارزش گذاری کرد؟
مثلا س = 10 و ل=5 و الف=2 و م=3 که اگه سلام نوشته شد خودش جمع بزنه بنویسه 20.
مثل حروف ابجد

محمدرضا دانشمندپور در تاریخ 17 خرداد 1398 نوشته:

خیلی عالی توضیح داده بودید ممنون

محمود در تاریخ 9 شهريور 1398 نوشته:

بسمه تعالی
سلام
چقدر قشنگ و قابل فهم آموزش دادید. تنها سایتی هست که بین هزاران سایت آموزشی به این قشنگی و مفهومی آموزش داده.

1356mehrdad در تاریخ 30 آذر 1398 نوشته:

مطلب آموزشی شما بسیار شیوا ، روان و فوق العاده ساده و حرفه ای بیان شده است و فقط به یک بار خواندن ومطالعه نیاز دارد . سپاس از شما

دارا در تاریخ 3 دى 1398 نوشته:

یه سوالی دارم
آیا میشه تابع شرطی بنویسیم که اگر در یک سلول دیگه فلان اتفاق بیوفته رنگ سلولی که توش هستیم مثلا أبی یا رزرد بشه ؟

فرشید میدانی در تاریخ 7 مرداد 1399 نوشته:

کتاب Conditional Formatting که در سایت است را ببینید.

امیدیان در تاریخ 19 دى 1398 نوشته:

باسلام من در اکسل یه لیستی دارم که میخوام از اون لیست تعداد سلولهایی که شامل کلمه فروش هستند رو بهم بگه.ممنون میشم اگه راهنماییم کنین

زهرا در تاریخ 24 دى 1398 نوشته:

سلام من واسه پایانامم نیاز به کمک دارم
میخوام مثلا بین A1 تا A90 بگرده هر چند تا 5 بود تعدادشو بهم بگه. یه دنیا ممنون میشم راهنمایی کنید

ابوالفضل احمدی در تاریخ 21 بهمن 1398 نوشته:

سلام ببخشید از کدام تابع میتوانم استفاده کنم که مثلاً اگر در سلول a1 یکی از گزاره های a یا aa یا ab و... بود عنوان حرف کلاس a ، اگر b یا bb یاbc بود گزاره کلاس b و اگر c یا ca یا ccو ... بود گزاره کلاس c بود و چند شرط دیگه
آیا میشه از اکسل استفاده کرد

فرشید میدانی در تاریخ 7 مرداد 1399 نوشته:

سلام / مقاله VLOOKUP را در همین سایت مطالعه کنید.

امیرسامی در تاریخ 19 اسفند 1398 نوشته:

اگر جمله شرط مقایسه زمان داشته باشد مثلا بزرگتر از ساعت ۸، زمان را چطور باید وارد کنیم؟!

فرشید میدانی در تاریخ 7 مرداد 1399 نوشته:

در مقاله تاریخ و زمان در اکسل این مورد دقیقا توضیح داده شده است اما به صورت خلاصه باید بنویسید:

=IF( A1 > TIMEVALUE("8:30"), "ok", "NOT")

ar.gol در تاریخ 13 فروردين 1399 نوشته:

با عرض سلام و ادب
از آموزش کامل شما در این مبحث تشکر می کنم
در صورت امکان مبحث تغییر رنگ سلول را بر اساس شرط نیز آموزش دهید.
همچنین آموزش جدا کردن جزء صحیح یک عدد اعشاری
خیلی خیلی ممنونم

فرشید میدانی در تاریخ 6 خرداد 1399 نوشته:

کتاب Conditional Formatting که در سایت است را ببیند.

مدارا در تاریخ 30 ارديبهشت 1399 نوشته:

مفید خلاصه و ساده بیان شد
ممنون بابت مطلب

ندا در تاریخ 1 خرداد 1399 نوشته:

باسلام
فرمولیمیخوام که به این شکل باشه
اگر سلول فلان زیر صفر بود نشون بده بدهکار و اگر بالای صفر بود نشون بده بستانکار

فرشید میدانی در تاریخ 6 خرداد 1399 نوشته:

باید بتوانید این فرمول را خودتان پس از خواندن این مقاله بنویسید. فقط یک نکته را مد نظر داشته باشید، بهتر است سوالتان را اینگونه در ذهنتان مطرح کنید:
اگر سلول فلان زیر صفر بود نشون بده بدهکار وگرنه نشون بده بستانکار

کیارش در تاریخ 13 خرداد 1399 نوشته:

با سلام ، من میخواستم بیشتر از یک if تعریف کنم فرضا بگم اگر 6 بود بنویس 7.30 اگر 12 بود بنویس 13.30 و اگر18 بود بنویس 19.30 این رو چطور میتونم بنویسم

فرشید میدانی در تاریخ 10 تير 1399 نوشته:

=IF(A1 = 6, 7.30, IF(A1 = 12, 13.30, IF(A1 = 18, 19.30, "error")))

البته در نسخه 2019 تابع IFS داریم که کار کمی ساده تر می شود:

=IFS(A1 = 6, 7.30, A1 = 12, 13.30, A1 = 18, 19.30)

و یا از تابع SWITCH استفاده کنید: (در اکسل 2019)

=SWITCH(A1, 6, 7.30, 12, 13.30, 18, 19.30, "error")

 

توجه مهم: اگر تعداد حالت های شما بیشتر باشد، باید / بهتر است که از vlookup استفاده کنید.

 

Sherko در تاریخ 7 مرداد 1399 نوشته:

با سلام
بر اساس عبارت نوشته شدە در یک سلول، عددی متناظر با آن را کە در لیستی دیگر قرار دارد انتخاب کند. مثلن با دیدن عبارت"C/30"، عدد ٣٠ را نمایش دهد.

فرشید میدانی در تاریخ 7 مرداد 1399 نوشته:

سلام / مقاله VLOOKUP را در همین سایت مطالعه کنید.

علی حیدری در تاریخ 12 مهر 1399 نوشته:

با سلام
میخام یه فرمولی بنویسم که اگر عددی که توی اون سلول نوشته بالاتر از 1 بود یه جمعی رو انجام بده مثلا دوتا سلول قبلی رو جمع کنه و 1 رو ازش کم کنه

فرشید میدانی در تاریخ 24 مهر 1399 نوشته:

لطفا مقاله را حداقل یکبار بخوانید. همه چیز همین جا توضیح داده شده است !!

محمودرضا در تاریخ 26 مرداد 1399 نوشته:

با سلام و تشکر.خیلی ممنون از لطفتون و توضیحات شفاف و کافی و قابل قبولتون.
استفاده کردم و مشکل چند ساله ام بابت توابع شرطی حل شد

احمد زاهد تهرانی در تاریخ 19 شهريور 1399 نوشته:

سلام
حقوق و دستمزد درست کنم. به این صورت که؟
شماره ۱: حقوق ثابت ۲۵۰۰۰۰۰ تومان
تبصره ۱٫۱: درصورت محقق شدن ۴۰الی۵۰ درصد از تارگت ، جقوق ثابت نصف می گردد.
تبصره ۱٫۲: درصورت محقق شدن زیر ۴۰ درصد از تارگت ، حقوق ثابت ۳ درصد محاسبه می گردد.
شماره ۲: پورسانت به صورت پلکانی
تبصره ۲٫۱: درصورت محقق شدن پورسانت بین ۰تا ۵۰ درصد تارگت ، ۱درصد
تبصره ۲٫۲: درصورت محقق شدن پورسانت بین ۵۱تا ۷۰ درصد تارگت ، ۱٫۵درصد
تبصره ۲٫۳: درصورت محقق شدن پورسانت بین ۷۱تا ۱۰۰ درصد تارگت ، ۲درصد
تبصره ۲٫۴: درصورت محقق شدن پورسانت بیشتر از تارگت ، ۳درصد
شماره ۳: پاداش فصلی به صورت پلکانی
تبصره ۳٫۱: از جمع تارگت سه ماه یک فصل درصورت محقق شدن یک سوم آن ، ۰٫۵ درصد
تبصره ۳٫۲: از جمع تارگت سه ماه یک فصل درصورت محقق شدن دو سوم آن ، ۰٫۷۵ درصد
تبصره ۳٫۳: از جمع تارگت سه ماه یک فصل درصورت محقق شدن کل تارگت ، ۱ درصد
تبصره ۳٫۴: از جمع تارگت سه ماه یک فصل درصورت محقق شدن بیشتر از تارگت ، ۱٫۵ درص

فرشید میدانی در تاریخ 24 مهر 1399 نوشته:

اینکار را بهتر است با تابع vlookup انجام دهید. مقاله های vlookup که در همین سایت است را با دقت بخوانید. دقیقا همین مساله حل شده است

مینا در تاریخ 18 مهر 1399 نوشته:

سلام
من میخوام فرمول شرطی برای تاریخ بنویسم که اگه تاریخهای موجود در جدول، بعدتر از تاریخ30-6-1399 بودبرام ستاره دار بشه

فرشید میدانی در تاریخ 24 مهر 1399 نوشته:

شما باید / بهتر است تاریخ را به صورت یک عدد یعنی 13990630 بنویسید و سپس به راحتی می توانید if را بنویسید.
برای حذف علامت - در بین تاریخ ها از ابزار Replace اکسل استفاده کنید تا همه به صورت عدد شوند. البته باید توجه داشته باشید که باید ماه و روز به صورت 2 رقمی باشند.

REZA2020 در تاریخ 10 آبان 1399 نوشته:

با سلام
2 تا سلول دارم A و B در سلول A هر بار عددی وارد میکنم . میخوام سلول B همیشه کمترین عدد وارد شده در سلول A رو بعنوان کمترین عدد وارد شده داشته باشه . یعنی اگه عدد جدید وارد شده در سلول A بزرگتر از خودش باشه تغییری نکنه اما اگه عدد جدید کوچکتر بود در B ذخیره بشه .

ممنون میشم راهنمایی بفرمایید .

سید محمد موسویان در تاریخ 30 آبان 1399 نوشته:

من دارم یک جدول اززشیابی را پر میکنم به این شکل که دارم توی یک جدول اسامی و معیار که اسمش را میگذارم جدول یک عددهای ارزشگذاری را وارد میکنم
و با استفاده از فرمول vlookup اعداد وارد شده در جدول یک توی جدول دو که جدول نهایی هم هست مینشیند.
حالا مشکلم اینه که توی جدول دو وقتی برای یک نفر عدد گذاری میکنم مثلا میدم 6 (مثلا یعنی عالی)
در تمام سلهای مربوط به اون رکوردچون فرمول vlookup یکسان هست پس در زیر تمام خونه های اون اعم از عالی تا ضعیف عدد 6 درج میشه
درصورتیکه میخام وقتی نمره به یک نفر 6 میدهم توی یک خانه ای خونه های بعدی که مثلا خیلی خوب تا ضعیف هستند دیگه چیزی درج نشه توش.
میخاستم کمکم کنید.

علی123 در تاریخ 23 آذر 1399 نوشته:

باسلام
در کدنویسی vbaاگر برای یک سلول شرط گذاشتیم و شرط آن سلول رعایت نشد .پیغامی میدهد چه کدی باید بنویسم که اگر سراغ سلول بعدی رفتیم دیگه پیغام مربوط به سلول قبلی نمایش داده نشه؟

علی123 در تاریخ 25 آذر 1399 نوشته:

باسلام
در کدنویسی vbaاگر برای یک سلول شرط گذاشتیم و شرط آن سلول رعایت نشد .پیغامی میدهد چه کدی باید بنویسم که اگر سراغ سلول بعدی رفتیم دیگه پیغام مربوط به سلول قبلی نمایش داده نشه؟