تابع NOT
تابع NOT یک مقدار منطقی را میگیرد و معکوس آن را برمیگرداند.
یعنی اگر به تابع NOT:
◀️مقدار TRUE داده شود، در خروجی مقدار FALSE را برمیگرداند.
◀️مقدار FALSE داده شود، در خروجی مقدار TRUE را برمیگرداند.
✅ تابع NOT در کنترل نتایج عبارتهای منطقی و تعریف شرطها کاربرد دارد.
مثلاً اگر بخواهید مطمئن شوید که دو عدد A و B با هم برابرند، کافی است عبارت منطقی "A=B" را (با رعایت قواعد) چک کنید: A=B
ولی اگر میخواهید مطمئن شوید که این دو عدد هیچ وقت با هم برابر نمیشوند، همین عبارت را داخل تابع NOT مینویسید: NOT(A=B)
این تابع میتواند به تعریف شرطهای پیچیدهتر و تغییر مسیر محاسبات و یا ارائه پیغام مناسب به کاربر کمک کند. این موضوع در طراحی مدلها و داشبوردهای تصمیمگیری کاربرد دارد. ? البته نحوه استفاده از این تابع به مسئله بستگی دارد.
نحوه نوشتن تابع NOT
این تابع را به شکل زیر مینویسیم:
=NOT(logical)
این تابع تنها یک ورودی دارد:
● logical: یک مقدار یا عبارت منطقی است که میتواند به صورت TRUE یا FALSE ارزیابی شود.
اگر ورودی و خروجی تابع NOT را به شکل یک تابع ریاضی ببینیم، خواهیم داشت:
توجه داشته باشید که:
- ورودی تابع NOT قاعدتاً باید قابل تبدیل به TRUE یا FALSE باشد.
- پس نمیتوانید در ورودی تابع NOT از عبارتهای متنی استفاده کنید.
- اما میتوانید از اعداد برای ورودی تابع NOT استفاده کنید. در اکسل اعداد غیر صفر معادل TURE هستند و عدد صفر معادل FALSE است.
- همچنین ورودی تابع NOT میتواند مقدار ثابت یا ارجاع به سلول و یا متغیر تعریف شده در اکسل باشد.
✅ برای درک بهتر، مثالهایی بعدی را ببینید.
مقدار ثابت در ورودی تابع NOT
ورودی تابع NOT، میتواند یک عبارت منطقی یا مقداری ثابت باشد:
نوشتن به شکل مستقیم
میتوان به طور مستقیم مقادیر منطقی TRUE یا FALSE را وارد کرد. در فرمول زیر، تابع NOT مقدار TRUE را معکوس میکند و خروجی تابع زیر FALSE است:
=NOT(TRUE)
همچنین ورودی منطقی میتواند به صورت عدد وارد شود. مثلا فرمول زیر را در نظر بگیرید:
=NOT(0)
مقدار صفر معادل FALSE است. پس تابع NOT معکوس این مقدار یعنی TRUE را برمیگرداند.
ارجاع به سلول
میتوانید مقدار TRUE (و یا عددی غیر صفر) را درون سلول A1 بنویسید و آنگاه اینطور از ارجاع به آن سلول استفاده کنید:
=NOT(A1)
نوشتن عبارت منطقی در ورودیهای تابع NOT
برای وارد کردن عبارت منطقی میتوانید از عملگرهای شرطی زیر استفاده کنید:
● برابر (==): بررسی میکند که دو مقدار برابر هستند.
● نابرابر (!=): بررسی میکند که دو مقدار برابر نیستند.
● بزرگتر از (>): بررسی میکند که یک مقدار از مقدار دیگر بزرگتر است.
● کمتر از (<): بررسی میکند که یک مقدار از مقدار دیگر کوچکتر است. ● بزرگتر یا مساوی با (>=): بررسی میکند که یک مقدار از مقدار دیگر بزرگتر یا مساوی است.
● کمتر یا مساوی با (<=): بررسی میکند که یک مقدار از مقدار دیگر کوچکتر یا مساوی است.
در ادامه مثالهایی از این نوشتن عبارت منطقی میبینید:
مثال ساده از عملگرهای منطقی
فرمول زیر را در نظر بگیرید:
=NOT(10<5)
در این فرمول معادل عبارت منطقی "عدد 10 بزرگتر از 5 است" به صورت 10>5 وارد شده است.
چون عدد 10 از 5 بزرگتر است، داخل تابع NOT معادل TRUE است. سپس تابع این مقدار را معکوس میکند و خروجی تابع FALSE خواهد بود.
اعتبارسنجی ورودی داده
اگر می خواهید مطمئن شوید که سلول A1، هیچ وقت یک مقدار متنی خاص مثل "text" را نداشته باشد، میتوانید از فرمول زیر استفاده کنید:
=NOT(A1="text")
در این فرمول، اگر سلول A1 مقدار ("text") را داشته باشد، تابع بالا مقدار FALSE را برمی گرداند.
حالا این مقدار FALSE را میتوانید با روشهای دیگر ترکیب کنید و به نحوی کاربر از از این مشکل (FALSE بودن نتیجه تابع) آگاه کنید. در واقع، این میتواند یک روش برای اعتبارسنجی سلولها باشد.
مثالی دیگر میزنیم.
شاید بخواهید که مخرج کسر یک مدل ریاضی که در سلول A1 نوشته شده است، هیچ وقت مقدار صفر نباشد. آنگاه میتوانید از تابع زیر استفاده کنید:
=NOT(A1=0)
حالا فرض کنید، در سلول A1 مقدار صفر قرار بگیرد. تابع بالا، ابتدا مقدار سلول A1 را چک میکند. چون صفر است، پس عبارت A1=0 معادل TRUE است. اما در نهایت، خروجی NOT مقدار FALSE است.
حالا از این مقدار برای اطلاعرسانی به کاربر یا جلوگیری از انجام محاسبات و یا حتی تغییر نحوه انجام محاسبات میتوانید استفاده کنید.
استفاده از متغیرها در ورودی تابع NOT
اگر در اکسل متغیری را تعریف کرده باشید، میتوانید نام آن را مستقیماً داخل تابع وارد کنید. تعریف متغیر میتواند به کمک ابزار Name Manager (از تب formula) انجام شود. البته شما میتوانید به کمک تابع LET، متغیرها را داخل فرمول نیز تعریف کنید.
در اینجا فرض میکنیم که شما قبلاً متغیری به نام age را تعریف کردهاید. حالا میتوانید از فرمول زیر برای بررسی اینکه آیا شخص بیش از 18 سال سن دارد یا خیر استفاده کنید:
=NOT(age < 18)
ترکیب تابع NOT با سایر توابع منطقی
ترکیب با AND
برای مثال، اگر می خواهید بررسی کنید که یک عدد در A1 بین دو مقدار نیست، می توانید از فرمول زیر استفاده کنید:
=NOT(AND(A1>=10, A1<=30))
برای اینکه بهتر متوجه شوید که این فرمول چطور کار میکند، ?مسیر ذهنی زیر را در نظر بگیرید:
✅ ابتدا فرض کنید که در سلول A1 مقدار 15 قرار گرفته است.
- در اینصورت ورودیهای تابع AND (یعنی هر دو عبارت منطقی) معادل TRUE هستند
- و در نتیجه تابع AND خروجی TRUE خواهد داشت.
- اما تابع NOT این مقدار را برعکس میکند و نتیجه FALSE خواهد بود.
✅ اما وقتی مقدار سلول A1، خارج از بازه مورد نظر است:
- هیچ یک از ورودیهای تابع AND مقدار TRUE ندارند.
- پس تابع AND مقدار FALSE را برمیگرداند.
- حالا تابع NOT، این مقدار را معکوس میکند و خروجی معادل TRUE خواهد بود.
??? به عبارتی دیگر، این فرمول فقط موقعی TRUE است که مقدار سلول A1، خارج از بازه 10 تا 30 باشد.
پس در واقع این فرمول کمک میکند که مطمئن شویم عدد موجود در A1 بین دو مقدار مورد نظر قرار نمیگیرد.
ترکیب با OR
فرض کنید که میخواهید بررسی کنید که مقدار سلول A1 برابر "red" یا "blue" نباشد. میتوانید از فرمول زیر استفاده کنید:
=NOT(OR(B5="blue",B5="red"))
برای بررسی فرمول فوق، اولاً توجه کنید که مقدار A1 نمیتواند همزمان هم "red" و هم "blue" باشد و صرفاً یکی از مقادیر را به خود میگیرد.
حالا ?مسیر ذهنی زیر را دنبال کنید:
✅ اگر مقدار A1 برابر "red" باشد:
- حداقل یکی از ورودیهای تابع OR معادل TRUE شده است و در نتیجه تابع OR مقدار TRUE برمیگرداند.
- سپس تابع NOT مقدار را برعکس کرده و FALSE را برمیگرداند.
✅ اگر A1 برابر با "blue" باشد:
باز هم مقدار خروجی NOT (به دلیل مشابه) همان FALSE است.
✅ اما اگر مقدار A1 برابر "green" باشد:
- هر دو عبارت داخل OR معادل FALSE خواهد بود.
- از طرفی تابع NOT آن را برعکس میکند و مقدار TRUE را برمیگرداند.
??? به عبارت دیگر، تابع فوق فقط موقعی TRUE است که مقدار A1 نه "red" باشد و نه "blue".
این فرمول (با ترکیب با سایر فرمولها) میتواند کمک کند تا با توجه به یکسری ویژگیها، لیستی از سطرها را فیلتر کنید. سپس میتوانید بر اساس مسئله خود تصمیم بعدی را بگیرید.
ترکیب با IF
فرض کنید دارید یک مدل ریاضی طراحی میکنید و میخواهید با خطای "تقسیم عدد بر صفر" مواجه نشوید.
این موضوع میتوانند دلایل مختلفی داشته باشد، اما فرض کنید باید مطمئن شوید که مقدار یک سلول صفر نباشد. همچنین میخواهید اگر این اتفاق افتاد پیغام مناسب به کاربر ارائه شود.
در اینصورت میتوانید از ترکیب IF و NOT به شکل زیر استفاده کنید:
=IF(NOT(A1=0),100/A1, "Value is Zero")
برای درک این فرمول، ?مسیر ذهنی زیر را طی کنید:
✅ اگر A1 مقدار صفر داشته باشد آنگاه:
- عبارت منطقی A1=0 معادل TRUE است.
- سپس خروجی تابع NOT معکوس یعنی FALSE خواهد بود.
- سپس وقتی تابع IF مقدار FALSE را دریافت میکند
- و چون این مقدار TRUE نیست، پس تابع IF شرط متناظر با آن یعنی value_if_not_true را در خروجی قرار میدهد.
- و در نتیجه مقدار "Value is Zero" را در خروجی قرار خواهد داد.
✅ اما اگر مقدار سلول A1 برابر صفر نباشد:
- عبارت منطقی A1=0 معادل FALSE است.
- تابع NOT آن را برعکس میکند. پس خروجی NOT یک عبارت TRUE است
- سپس تابع IF مقدار TRUE را دریافت میکند، پس به مقدار متناظر (value_if_true) نگاه میکند.
- و بنابراین محاسبات (تقسیم عدد 100 بر مقدار A1) انجام خواهد شد.
??? پس شما با این شکل از فرمولنویسی، از خطای "تقسیم بر صفر" جلوگیری کردهاید.
ترکیب با سایر توابع منطقی
میتوان تابع NOT را با سایر توابع منطقی نیز ترکیب کرد و فرمولهای پیچیدهتر را طراحی کرد.
برای نمونه فرمول زیر را در نظر بگیرید:
=IF(NOT(ISBLANK(A1)),100/A1,"")
در فرمول فوق، از تابع ISBLANK استفاده شده است. این تابع بررسی میکند که یک سلول خالی است یا نه. اگر خالی بود، مقدار TRUE را برمیگرداند.
حالا برای درک فرمول بالا، ?مسیر ذهنی زیر را دنبال کنید:
✅ اگر A1 خالی باشد:
- ابتدا تابع ISBLANK چک میکند که آیا سلول A1 خالی است یا نه.
- اگر سلول A1 خالی باشد، خروجی تابع ISBLANK مقدار TRUE است.
- این باعث میشود که خروجی تابع NOT، عکس این مقدار یعنی FALSE باشد.
- بنابراین فرمول تقسیم عدد 100 بر مقدار سلول A1 انجام نشده و عبارت خالی "" در سلول قرار خواهد گرفت.
✅ اما در مقابل اگر A1 خالی نباشد، محاسبات میتواند انجام شود!
⚡⚡⚡ توجه مهم درباره فرمول قبلی:
? ممکن است سلول A1 پر باشد، ولی حاوی خطا باشد. در این صورت خروجی کل فرمول هم با خطا همراه خواهد بود.
? ممکن است در سلول A1 خطایی وجود نداشته باشد و پر هم باشد، ولی حاوی یک عبارت متنی باشد. در اینصورت باز هم محاسبات با خطا مواجه خواهد شد چون تقسیم عدد بر متن امکانپذیر نیست.
همانطور که میبینید، مدلسازی به مسئله و نحوه ترکیب توابع بسیار وابسته است.
خطاها در تابع NOT
اگر ورودی تابع NOT یک عبارت منطقی (یا عددی) نباشد، خروجی تابع با خطای #VALUE! همراه خواهد بود.
همچنین وجود سایر خطاها در ورودی تابع NOT، در خروجی خطا تولید میکند. مثلاً اگر ورودی NOT، خطای "تقسیم بر صفر" داشته باشد، خطا به خروجی منتقل میشود.
جمعبندی
- تابع NOT در اکسل یک تابع منطقی است که مقدار منطقی یک عبارت داده شده را معکوس می کند.
- آرگومان تابع NOT می تواند یک مقدار منطقی یا عددی باشد. این مقدار میتواند مقدار ثابت یا ارجاع به سلول باشد.
- تابع NOT را می توان با سایر توابع منطقی (مانند AND یا OR یا IF و…) ترکیب کرد تا شرایط پیچیده تری را بررسی کند.
- خطای #VALUE! زمانی رخ می دهد که آرگومان تابع NOT یک مقدار منطقی یا عددی نباشد. البته اگر خطایی در ورودی باشد، به خروجی تابع NOT هم منتقل خواهد شد.