سبد خرید
0

محصولی در سبد خرید نیست.

بازگشت به فروشگاه

تابع IF | پایه فرمول نویسی منطقی اکسل

۳.۱/۵ - (۱۵۳ امتیاز)

آشنایی با فرمول IF در اکسل

ما روزانه در حال انتخاب و تصمیم گیری در خصوص مسائل روزمره هستیم و با منطق انتخاب و تصمیم گیری کاملا آشنا هستیم. مثلا به خودمون میگیم: اگه این اتفاق بیفته این کار و میکنم، اگه نیفته، ی کار دیگه!. یا مثلا میگیم اگه حالم خوب باشه و دوستم موافق باشه، به پارک میرم. در غیر اینصورت میرم خونه و مسائلی از این دست. در اکسل هم این موضوع برقرار هست. مثلا میگیم اگه خروجی این فرمول بزرگتر از صفر شد، خروجی بشه “عالی” در غیر اینصورت سلول رو خالی بذاره. به توابعی که این کار رو در اکسل انجام میدن، توابع منطقی یا Logical گفته میشه. اصلی ترین و پرکاربردترین تابع در این دسته توابع، فرمول if در اکسل است. توابع منطقی اساس و پایه برنامه نویسی در اکسل هست چرا که وجه اشتراک خواسته ما و زبان اکسل است. ما با این توابع و از همه مهمتر تابع If خواسته های منطقی خود را به اکسل می فهمانیم. پس درک این توابع و توانایی تبدیل مسائل مختلف به ساختار If خیلی خیلی مهمه. در ادامه به معرفی تابع If و مثال های کاربردی این تابع می پردازیم. تشریح آرگومان های این تابع:

Logical_Test:

شرط ماست. همونی که میگیم اگه این اتفاق افتاد. مثلا همینکه اگر دوستم باهام بیاد، شرط ماست.

value_if_True: خروجی فرمول در صورتی که شرط برقرار بشه. مثلا اگه دوستم بیاد، میرم پارک. پارک رفتن Value true ماست.

value_if_False: حالا اگه شرط برقرار نشد چی؟. این آرگومان خروجی تابع در صورت برقرار نبودن شرطه. یعنی اگه دوستم نیومد، میرم خونه.

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

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

با چند تا مثال این مفهوم رو بیشتر کار کنیم:

مسئله اول تابع IF

تابع IF اکسل - مثال اول

در شکل ۱، اطلاعات فروش شعب یک فروشگاه زنجیره ای را داریم. می خواهیم مسئولین شعبه هایی که بیش از ۵۰۰ فروش داشتند را استخراج کنیم.

شکل۱- فرمول if در اکسل ، استخراج نام مسئولین شعبه های با فروش بالای ۵۰۰

تشریح آرگومان ها: آرگومان اول: شرط این است که ایا فروش بالای ۵۰۰ بوده یا نه.

IF(B2>500,C2,””)

آرگومان دوم: اگر شرط برقرار (فروش بالای ۵۰۰) باشد، نام مسئول فروشگاه به عنوان خروجی تابع نمایش داده شود.

IF(B2>500,C2,””)

آرگومان سوم: اگر شرط برقرار (فروش بالای ۵۰۰) نباشد، سل خالی بماند. که خالی بودن را بصورت “” در اکسل نمایش میدهیم.

IF(B2>500,C2,“”)

نکته: آرگومان ها در توابع منطقی می توانند خود ترکیب توابع و فرمول های زیادی باشند. مهم این است که شرطی که داخل فرمول می نویسیم، به گزاره true/false ختم شود.

مسئله دوم تابع IF

تابع IF اکسل - مثال دوم

در شکل ۲، اطلاعات فروش شعب یک فروشگاه زنجیره ای را داریم. میخواهیم اگر شعبه ای بیش از ۷۰۰ فروش داشته ۶۰% پورسانت و اگر زیر ۷۰۰ فروش داشته ۴۰% پورسانت دریافت کند.

شکل ۲- فرمول if در اکسل ، محاسبه پورسانت با شرط میزان فروش

تشریح آرگومان ها: آرگومان اول: شرط ما اینه که ببینیم آیا فروش هر شعبه بالای ۷۰۰ بوده یا نه:

IF(B2>=700,0.6*B2,0.4*B2)

آرگومان دوم: ۶۰ درصد فروش به عنوان پورسانت برای فروش های بالای ۷۰۰٫ بعبارتی، در بررسی شرط منطقی (فروش بالای ۷۰۰)، اگر برقرار (بزرگتر مساوی ۷۰۰) بود، پورسانت معادل ۶۰ درصد فروش محاسبه می شه.

IF(B2>=700,0.6*B2,0.4*B2)

آرگومان سوم: ۴۰ درصد فروش به عنوان پورسانت برای فروش های زیر ۷۰۰٫ بعبارتی، در بررسی شرط منطقی (فروش بالای ۷۰۰)، اگر برقرار (بزرگتر مساوی ۷۰۰) نبود، پورسانت معادل ۴۰ درصد فروش محاسبه می شه.

IF(B2>=700,0.6*B2,0.4*B2)

نکته: دقت کنیم که فرمول رو برای یک داده ثبت میکنیم و بعد Drag میکنیم.
 

مسئله سوم تابع IF

تا اینجا مثال هایی که زدیم فقط روی اعداد بود. سوال اینجاست که آیا میتونیم روی کلمات هم شرط بنویسیم؟ جواب اینه که بله، کافیه که هر شرطی که مینویسیم، در نهایت به true/false ختم بشه. پس کافیه که بنویسیم مثلا A1=”تحویل داده شد” و بعد مابقی فرمول. به فرمول زیر دقت کنید.

=IF(A1=”تحویل داده شد”, “OK”, “Not Ok”)

در این فرمول اگر داخل سلول A1 عبارت تحویل داده شد نوشته شده باشه، عبارت Ok نمایش داده میشه و اگر این عبارت نوشته نشده باشه، Not Ok نمایش داده میشه. توجه داشته باشید که گزاره باید عینا نوشته شده باشه. مثلا اگر فقط “تحویل” نوشته شده باشه، شرط برقرار نیست. چون شرط بصورت کامل مود بررسی قرار میگیره. پس مراقب Space های اضافی هم باشید!

نکته: هر جمله، کلمه و یا عبارتی رو داخل فرمول میخواهیم بنویسیم، باید داخل “” قرار بدیم. در غیر اینصورت با خطا مواجه میشیم.

حالا موضوعی که پیش میاد اینه که اگر بخوایم بخشی از سلول رو مورد جستجو قرار بده چه باید بکنیم؟ مثلا اگر سلولی شامل عبارت تحویل بود، بهمون OK رو بده. حالا هر جمله و کلمه دیگه ای هم قبل یا بعدش بود باز هم خروجی صحیح باشه. برای این کار باید اول با استفاده از توابع دیگه وجود یک عبارت رو در یک سلول بررسی کنیم. برای این کار تابع Search/Find استفاده میکنیم. توضیحات و مثال بیشتر رو میتونید در مقاله مربوط به تابع Find مطالعه کنید.

برای حل این مسئله اول باید ببینیم آیا عبارت “تحویل” در سلول مورد نظر وجود داره یا نه. برای این کار از تابع Search/Find بصورت زیر استفاده میکنیم.

Search(“تحویل”,A1)

خروجی این تابع یا عدده یا خطا. اگه عدد بده، یعنی اون عبارت پیدا شده و وجود داره ،اگر خطای #Value بده، یعنی پیدا نکرده. از طرفی ما گفتیم که فرمولی که در شرط if نوشته میشه باید به true/False ختم بشه. پس این کافی نیست. ما باید با یک فرمول، عدد بودن خروجی تایع Search رو به true تبدیل کنیم. برای این کار از تابع isnumber استفاده میکنیم. این تابع هموطور که از اسمش پیداست، چک میکنه که ورودی مورد نظر عدد هست یا نه. اگر عدد باشه، True میده و اگر عدد نباشه False. پس فرمول رو بصورت زیر می نویسیم.

Isnumber ( Search (“تحویل”,A1))

خروجی این فرمول چیه؟ جلوی هر سلولی که شامل کلمه تحویل باشه، عبارت true نمایش میده و هر سلولی که این کلمه رو نداشته باشه، False نمایش میده. پس کافیه این فرمول به عنوان اولین آرگومان تابع if قرار بگیگره و مابقی آرگومان ها مثل فرمول قبلی، یعنی:

IF ( Isnumber ( Search (“تحویل”,A1)), “OK”, “Not Ok”)

  تابع If اهمیت خیلی زیادی داره و هنر کاربران در اینه که بتونن مسائل منطقی خودشون رو به زبان اکسل تبدیل کنن. حالت ساده If (که خودش به تنهایی از اهمیت بسیار زیادی برخوردار هست) رو توضیح دادیم که در اون یک شرط رو بررسی کردیم. حالا برای حالت های مختلف مثلا بررسی بیش از یک شرط و اصطلاحا If های تو در تو یا Nested_If آموزش های بعدی را از دست ندهید. همچنین آموزش عملگرهای منطقی در اکسل رو هم بخون. ویدئو معرفی تابع IF این آموزش رو به صورت ویدئویی ببینید:

 

کلیدواژه : مقدماتی
134

من سامان چراغی هستم. دانش آموخته مقطع فوق لیسانس دانشگاه تربیت مدرس در رشته مهندسی صنایع. از سال 1388 اکسل و برنامه نویسی VBA رو به صورت حرفه ای شروع کردم.

دیدگاه کاربران
  • آیدا ۸ اسفند ۱۳۹۷ / ۱۰:۲۴ ق٫ظ

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

    • آواتار
      حسنا خاکزاد ۸ اسفند ۱۳۹۷ / ۱۱:۲۰ ق٫ظ

      درود بر شما
      اگر تاریخ ها شمسی است، بهتره از تقویم روش دوم در لینک زیر استفاده کنید که هر روز رو خواستید مشخص کنید
      https://excelpedia.net/excel-jalali-date/

  • علوی ۲۶ بهمن ۱۳۹۷ / ۱۱:۳۰ ب٫ظ

    سلام وقت بخیر
    من در حال انجام آنالیزی در اکسل هستم در این مرحله باید مشخص کنم اعدادی که بدست آوردم در کدام طبقه قرار میگیرند متاسفانه با تابع IF این امکان وجود ندارد چون گزاره های جدول بیش از حد توانایی این تابع هست ۱۰ طبقه که هر طبقه یک دامنه عدد دارد چگونه میتونم فرمول نویسی کنم که عدد من در کدام طبقه یا کدام رنج قرار میگیرد؟

      • علوی ۲۷ بهمن ۱۳۹۷ / ۱۱:۳۰ ق٫ظ

        ممنون ولی من دنبال روشی هستم که خود اکسل اتومات متوجه بشه عدد بدست آمده در کدام دامنه قرار میگیرد. مثلا سودمندی خیلی خوب ۴ تا ۵، سودمندی خوب ۳ تا ۴، سودمندی متوسط ۲ تا ۳ و سودمندی ضعیف ۱ تا ۲ و سودمندی ناچیز ۰ تا ۱، خنثی ۰ ، تخریب ناچیز ۰ تا -۱، تخریب ضعیف -۱ تا -۲، تخریب متوسط -۲ تا -۳، تخریب زیاد -۳ تا -۴، تخریب خیلی زیاد دامنه -۴ تا -۵ را در بر میگیرد. اعدادی که من بدست آوردم مثلا -۱.۹، ۲.۳، و ….

        • آواتار
          حسنا خاکزاد ۲۷ بهمن ۱۳۹۷ / ۱:۴۲ ب٫ظ

          دوست عزیز
          مطالعه بفرمایید لینک رو. جستجوی بازه ای خدمتتون ارسال شده.
          یعنی دقیقا همون که میخواید
          o -۵
          p -۴
          a -۳
          s -۲
          u ۰
          d ۳
          f ۴

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

          =VLOOKUP(E3;B1:C7;2;1)

          دقت کنید E3 عدد بدست آمده هست که قراره بازه اون مشخص بشه

  • علی ۲۵ دی ۱۳۹۷ / ۹:۳۱ ق٫ظ

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

  • سجاد رسول خانی ۱۳ دی ۱۳۹۷ / ۹:۳۸ ق٫ظ

    با سلام
    یه جدول در اکسل طراحی کردم که شامل چند ستون برای وارد کردن ساعات on و of می باشد که به این شکل {(۷:۰۰) تا (۱۲:۰۰)و(۱۳:۰۰) تا (۱۹:۰۰)} در چند ستون بر حسب ساعت و دقیقه بهش تایم میدم بعد مجموع اختلاف این ساعات رو با فرمول =(I3-H3)+(G3-F3)+(E3-D3)+(C3-B3) به عنوان ساعات کارکرد دستگاه محاسبه کردم و حالا این کارکرد ها با توجه به زمان مصرف برق به کم بار و میان بار و اوج بار تقسیم میشه که برای هر کدام هم ی ستون گذاشتم حالا میخام ی فرمول بدم که در ستونهای on و of دستگاه مجموع ساعاتی که بین ساعات ۱۳:۰۰ تا ۱۷:۰۰ می باشد رو در ستون کم باری نشون بده و مجموع ساعاتی که بین ساعات ۵:۰۰ تا ۱۳:۰۰ و ۱۷:۰۰تا ۲۲:۰۰ هستن رو در ستون میان باری نشون بده و مجموع ساعاتی که بین ۵:۰۰تا ۲۲:۰۰ هستن رو در ساعات اوج بار نشون بده خودم این فرمول رو براشون نوشتم ولی خطا میده (((SUM(((TIME(13;0;0)TIME(17;0;0=
    با تشکر لطفاً راهنماییم کنید.

    • آواتار
      حسنا خاکزاد ۱۵ دی ۱۳۹۷ / ۳:۵۶ ب٫ظ

      درود بر شما
      شما باید بازه ها رو با توجه به اوج بار، کم بار و … مشخص کنید و بر اسا اونها IF بنویسید.
      در نهایت جمع بزنید.
      با ساعت کافیع مثل عدد معمولی رفتار کنید

      https://excelpedia.net/excel-time-calculation/

  • حسام شیبانی ۲ دی ۱۳۹۷ / ۱۰:۵۱ ق٫ظ

    سلام یه شرط میخوام بزارم به شکل اگر سلول a از b بزرگتر بود مثلا در سلول بدهکار بنویسش اگر نه در سلول طلبکار
    میشه کمک کنید؟ممنون

    • آواتار
      حسنا خاکزاد ۲ دی ۱۳۹۷ / ۱۱:۲۷ ق٫ظ

      درود بر شما
      نمیتونید جای فرمول و عوض کنید
      باید برای هر سلول بدهکار و بستانکار، فرمول جداگانه بنویسید.
      مثلا در سلول بدهکار، بنویسید:

      =If(a>b,a,"")
      

      مثلا در سلول طلبکار، بنویسید:

      =If(a>b,"",a)
      
  • alireza ۲۶ مهر ۱۳۹۷ / ۸:۳۸ ق٫ظ

    با سلام
    من میخوام یه شرط بذارم که در صورت نادرست بودن شرط مقدار قبلی سلول تغییر نکند.باید چکار کنم?ممنون

    • آواتار
      حسنا خاکزاد ۲۸ مهر ۱۳۹۷ / ۸:۳۷ ق٫ظ

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

  • مهدی ۱۹ مهر ۱۳۹۷ / ۸:۲۲ ق٫ظ

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

    • سامان چراغی ۱۹ مهر ۱۳۹۷ / ۲:۲۳ ب٫ظ

      سلام، فرض کنید این دو عدد تو سلول های A1 و B1 هست و میخواید عدد سوم رو در سلول C1 بنویسید. سلول C1 رو انتخاب کنید و در قسمت Custom مربوط به Conditional Formatting فرمول زیر رو بنویسید و فرمت نهایی رو انتخاب کنید.

      =C1 > A1 + B1
      
  • محسن ۲۱ شهریور ۱۳۹۷ / ۱۱:۵۵ ق٫ظ

    با سلام و احترام / اگر در ستون a1 و a2 اسم محسن باشد در ستون مقابل به ترتیب ۵ و ۶ باشد و دوباره در ستون a4 , a3 اسم رضا و در مقابل آن به ترتیب ۵ و ۳ باشد / می خواهیم عدد بزرگتر نشان داده شود و در آخرتمامی عدد های برگتر جدول جمع گردد فرمول آن چگونه می باشد.
    B A
    ۱۱۲ ۲۵
    ۱۱۲ ۱۴.۲۸۵۷۱۴۲۹
    ۱۱۳ ۳۶
    ۱۱۳ ۷۵
    ۱۲۶ ۷۱.۴۲۸۵۷۱۴۳
    ۱۲۶ ۶۶.۰۷۱۴۲۸۵۷
    ۱۲۶ ۳۱

    • آواتار
      حسنا خاکزاد ۲۱ شهریور ۱۳۹۷ / ۱:۰۲ ب٫ظ

      درود بر شما
      یک راه ساده استفاده از pivot table هست
      راه دیگه اینه که اگر تعداد سلولها الگوی مشخص داره (یعنی دوتایی) هست فرمول ماکزیمم رو بر اساس این موضوع بنویسید
      یک راه هم استفاده از فمرول نویسی آرایه ای هست Max IF. که اول باید یک لیست بدون تکرار درست کنید از داده های ستون اول بعد فرمول آرایه ای max if بنویسید.

      =Max(If(A1:A100=C1;B1;B100;""))
  • پروانه ۲۸ مرداد ۱۳۹۷ / ۸:۳۹ ق٫ظ

    سر کار خانم مهندس خاکزاد
    با درود فراوان
    از اینکه مزاحمتون شدم و وقتتون را گرفتم خیلی عذرخواهی میکنم ولی واقعا مرجعی مطمئن تر از شما پیدا نکردم.
    من دو فایلی رو که میخوام واستون ضمیمه کردم
    هدف من اینه که بگم اگر مثلا سلول خرداد ماه د رفایل مرجع پر شد از هر عددی بین صفر تا صد، عدد درج شده د رسلول خرداد را نشون بده و در غیر اینصورت تهی را نشون بده.بعد هم با conditional formatting شرط blank رو گذاشتم که اگر خالی بود قرمز و پر بود سبز.
    همانطور که ملاحظه می فرمایید با توجه به اینکه سلول خالی هستش صفر را نشان می دهد و چون عدد صفردرج شده سبز می شود.
    سپاسگزار می شوم اگر پاسخ بدهید.

    =IF(AND('[Develop strategy.xlsx]KPIs'!$D$3>=0;'[Develop strategy.xlsx]KPIs'!$D$3<=100);'[Develop strategy.xlsx]KPIs'!$D$3;"“”")

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

    • آواتار
      حسنا خاکزاد ۲۸ مرداد ۱۳۹۷ / ۹:۴۹ ق٫ظ

      درود بر شما
      تصویر که اینجا دیده نمیشه
      ولی میتونید فایلتون رو در گروه تلگرامی اکسل پدیا بذارید و سوالتون رو اونجا مطرح کنید.

      فرمولتون درسته منتها آرگومان آخر رو فقط دو تا دابل کوتیشین پشت سر هم بذارید یعنی “”

  • fafa71 ۴ اردیبهشت ۱۳۹۷ / ۲:۵۴ ب٫ظ

    سلام
    من میخوام همچین فرمولی داشته باشم. در حقیقت برای سه شرط این فرمول رو پیدا کردم ولی ارور !value# میزنه:
    ((“”(if(D1=0,Replace,if(and(D1+H1<5,Perchace
    در واقع میخام بگم اگز محتوای D1 صفر شد Replace نمایش داده بشه
    اگر جمع دو سلول D1وH1کمتر از ۵ شدPerchase و اگر این دو برقرار نبود سلول خالی بمونه
    ممکنه کمکم کنید؟

    • سامان چراغی ۴ اردیبهشت ۱۳۹۷ / ۳:۰۱ ب٫ظ

      سلام
      ساختار فرمولتون درسته ولی جزئیات رو رعایت نکردید. از فرمول زیر استفاده کنید:

      =IF(D1=0,"Replace",IF(D1+H1<5,"Purchase",""))
      
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توسط
تومان