بخش نهم: توابع منطقی (LogicalFunctions)

در این بخش به معرفی توابع منطقی که در بخش Logical از منوی Formula قرار دارند، می‌پردازیم. این توابع، لیستی از آرگومان‌های ورودی را دریافت می‌کنند، بر اساس مقایسه یا بررسی که روی آنها انجام می‌دهند، یک خروجی True یا False بر می‌گردانند.

توابع True: مقدار منطقی True را باز می‌گرداند.

تابع False: مقدار منطقی False را باز می‌گرداند.

معمولاً کاربرد این دو تابع در شرط‌هاست و بیشتر اوقات در ترکیب با تابع If یا سایر توابع منطقی استفاده می‌شوند.

تابع Not: مخالف یک مقدار منطقی را باز می‌گرداند.

P4  TRUE

NOT(P4)=FALSE

تابع And: این تابع چند شرط را به عنوان ورودی دریافت نموده و اگر تمامی این شرط‌ها برقرار بودند، مقدار True و در غیر این صورت مقدار False را برمی‌گرداند. حتی اگر یکی از شرط‌ها هم برقرار نباشد خروجی تابع False می‌شود.

AND(2>1," b">"a",4<8)=TRUE

در این مثال، تمام شرط‌های ورودی درست هستند.

AND(2>1," b"<"a",4<8)=FALSE

در این مثال، شرط دوم نادرست است، بنابراین حاصل تابع، False می‌شود.

نکته) برای چک کردن شرط‌های درونی این تابع می‌توانید از گزینه Evaluate Formula در منوی Formulas استفاده کنید. در پنجره باز شده، با فشردن دکمه Evaluate می‌توانید چک کنید که تک‌تک شرط‌های ورودی تابع، برقرار هستند یا خیر. این امکان در فرمول نویسی‌های پیچیده برای ردگیری خطاها بسیار کاربردی است.

تابع OR : این تابع چند شرط را به عنوان ورودی دریافت نموده، اگر یکی از این شرط‌ها برقرار بودند، مقدار True را بر می‌گرداند . در صورتی که هیچ‌یک از شرط‌ها و برقرار نباشند، مقدار False را برمی‌گرداند.

AND(4>6," A">"B",4>3)=TRUE

در این مثال، شرط‌های ورودی اول و دوم نادرست هستند. اما به خاطر برقرار بودن شرط سوم، حاصل تابع True می‌شود.

تابع If : یک تابع شرطی است که درست یا نادرست بودن یک شرط ورودی را بررسی می‌کند. در صورت درست بودن شرط، یک عمل و در صورت نادرست بودن آن، عمل دیگری را انجام می‌دهد.

IF(TRUE,1,3)=1

وجود آرگومان دوم و سوم این تابع اختیاری است.

IF(FALSE,1)=FALSE

حالا با یک مثال کاربرد توابع بالا را بیشتر بررسی می‌کنیم.

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

محاسبه تشویقی برای کارکنان واحد سازمانی C 

=IF(G3="واحد C","دارد","")

در اینجا سلول G3 حاوی نام واحد کارکنان است که شرط برابر «واحد C » بودن برای آن بررسی می‌شود و در صورت برقرار بودن شرط، عبارت «دارد» در ستون تشویقی درج می‌شود.

محاسبه نرخ اضافه کار متغیر برای ساعات اضافه کار کمتر و بیشتر از 30 ساعت:

=IF(I3<=30,70000,50000)

در اینجا سلول I3 حاوی ساعت اضافه کار کارکنان است که شرط کوچکتر مساوی 30 ساعت بودن برای آن بررسی می‌شود و در صورت برقرار بودن، نرخ 70000 و در غیر این صورت نرخ 50000 در ستون اضافه کار درج می‌شود.

محاسبه نرخ اضافه کار متغیر برای ساعات اضافه کار کمتر و بیشتر از 30 ساعت و بیش از 60 ساعت:

=IF(I3<=30,70000,IF(I3<=60,50000,40000))

در اینجا باید از یک If تو در تو استفاده کنیم. سلول I3 حاوی ساعت اضافه کار کارکنان است که شرط کوچکتر مساوی 30 ساعت بودن برای آن بررسی می‌شود و در صورت برقرار بودن، نرخ اضافه کار 70000 در ستون اضافه کار درج می‌شود. در غیر این‌صورت، با یک شرط دیگر چک می‌کنیم که ساعت اضافه کار، کوچکتر مساوی 60 ساعت است یا خیر، اگر بود، نرخ اضافه کار 50000 و در غیر این‌صورت نرخ اضافه کار 40000 در ستون اضافه کار درج می‌شود.

شرط‌های تو در تو می‌توانند بسیار پیچیده شوند و به‌همین ترتیب ردگیری خطا در آنها هم، به سختی انجام خواهد شد. به همین علت، از اکسل نسخه Office 2019 به بعد تابع IFS  معرفی شد. این تابع می‌تواند چندین شرط رو به عنوان ورودی دریافت کند و به ازای شروط مختلف، خروجی‌های مختلفی بازمی‌گرداند.

=IFS(I3<=30,70000,AND(I3>=30,I3<60),50000,I3>=60,40000))

در اینجا شرط اول، بررسی کوچک‌تر مساوی 30 ساعت بودن، محتوای سلول I3 یا همان ساعت اضافه کار کارکنان است، که در صورت برقرار بودن، نرخ اضافه کار 70000 در ستون اضافه کار درج می‌شود. در غیر این‌صورت، شرط دومی داریم که آن را با تابع AND بررسی می‌کنیم. بررسی بیش از 30 و کوچکتر از 60 ساعت بودن، محتوای سلول I3 که در صورت برقرار بودن، نرخ اضافه کار 50000 در ستون اضافه کار درج می‌شود. در غیر این صورت و بزرگترین مساوی بودن محتوای سلول I3 از 60 ساعت، نرخ اضافه کار 40000 در ستون اضافه کار درج می‌شود.