تابع SWITCH

تابع SWITCH در اکسل

تابع SWITCH در اکسل یک تابع منطقی است که می‌تواند ✅ جایگزینی مناسب برای شکل خاصی از IFهای تودرتو (Nested-IF) باشد.

 

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

در اینجا به کمک 1️⃣ یک مثال، فرمول IF تودرتو را با  SWITCH مقایسه کنیم: ظاهری و باطنی!

 

مقایسه ?ظاهری یک فرمول Nested-IF با SWITCH

موضوع مثال این است:

می‌خواهیم بر اساس نام ماه میلادی ?️ بگوییم که در چه فصلی قرار دارد. به عبارتی بر اساس نام ماه، می‌خواهیم نام فصل میلادی را تعیین کنیم.

البته روشهای مختلفی برای این کار می‌توان پیشنهاد داد؛ اما ابتدا می‌خواهیم این فرمول را با IF تودرتو بنویسیم.

 

✅✅ برای حل این مسئله، می‌توانیم از فرمول IF تودرتوی زیر استفاده کنیم:

(لازم نیست الان فرمول را بررسی کنید … فقط نگاه کنید و رد شوید! ?)

=IF(A1="January","Winter",IF(A1="February","Winter",IF(A1="March","Spring",IF(A1="April","Spring",IF(A1="May","Spring",IF(A1="June","Summer",IF(A1="July","Summer",IF(A1="August","Summer",IF(A1="September","Autumn",IF(A1="October","Autumn",IF(A1="November","Autumn",IF(A1="December","Winter"))))))))))))))

 

✅✅ اما معادل فرمول بالا را می‌توانید با تابع SWITCH نیز بنویسید (در اکسل با زدن همزمان Alt و Enter می‌توان خطوط فرمول‌ها را شکست):

(باز هم صرفاً نگاه کنید و رد شوید!??)

=SWITCH(
A1,
"January", "Winter",
"February", "Winter",
"March", "Spring",
"April", "Spring",
"May", "Spring",
"June", "Summer",
"July", "Summer",
"August", "Summer",
"September", "Autumn",
"October", "Autumn",
"November", "Autumn",
"December", "Winter",
FALSE
)

✅✅ در این مثال از مقایسه دو فرمول بالا می‌توان متوجه شد که تابع SWITCH:

  1. خوانایی بیشتری دارد.
  2. فرمول‌نویسی آن کوتاه‌تر دارد.
  3. ویرایش آن راحت‌تر است.

 

مقایسه ?باطنی همان فرمول Nested-IF با SWITCH

? در مثال قبل، وقتی فرمول ما یک IF تودرتو است، در هر یک از آن توابع IF، ما داریم یک ? تست انجام می‌دهیم (مقدار A1 را با نام یک ماه مقایسه می‌کنیم) و عبارت منطقی زیر را تست می‌کنیم:

A1="نام ماه"

در صورتی که عبارت منطقی فوق صحیح (TRUE) نباشد، آنگاه سپس به IF بعدی می‌رویم و این کار را تا جایی ادامه می‌دهیم که A1 با یکی از نام‌های ماه‌ها برابر باشد و در آنجا نام فصل را در خروجی برمی‌گردانیم.

 

این مثل این است که ما لیستی از ماه‌های سال داشته باشیم و مقدار سلول A1 را در آن جستجو کنیم ...

◀️ و این دقیقاً کار تابع SWITCH است:

  1. تابع SWITCH یک عبارت را بین یک لیست از مقادیر جستجو می‌کند.
  2. و اولین جایی که مقدار مورد نظر را پیدا کرد،
  3. مقدار متناظر آن را (از لیستی دیگر) برمی‌گرداند.

 

✅ تابع SWITCH کار ما را ساده می‌کند چون لازم نیست چندین تابع IF را به شکل تودرتو بنویسیم و نگران پرانتزها و اشتباه در فرمول‌نویسی باشیم. همچنین خواندن و ویرایش SWITCH ساده‌تر است.

 

⛔⛔ پس تأکید می‌کنیم که این طور نیست که هر مسئله‌ای که با مجموعه IF تودرتو حل می‌شود را بخواهیم یا اصلاً بتوانیم با تابع SWITCH پیاده‌سازی کنیم.

تابع SWITCH در ⚠️ موارد خاص کاربرد دارد. مواردی که اگر بخواهیم آن را با  فرمول IF تودرتو بنویسیم، شبیه این باشد که داریم در یک لیست جستجو می‌کنیم و سپس مقدار متناظری را برمی‌گردانیم.

 

? البته تفاوت‌هایی در برنامه‌نویسی و اجرای این دو مورد وجود دارد. مثلاً در IF تودرتو عبارت منطقی بارها تست می‌شود ولی در تابع SWITCH با مقایسه کمتری در پشت صحنه این کار را انجام می‌دهد و این باعث افزایش سرعت پردازش می‌شود. اما در مسائل کوچک این تفاوت در سرعت جزئی است و البته نتیجه نهایی دو فرمول هم تفاوتی ندارد.

 

حالا که بهتر متوجه لزوم استفاده از SWITCH شدیم، بیایید ببینیم که ما چطور از تابع SWITCH استفاده می‌کنیم.

 

چطور از تابع SWITCH استفاده می‌کنیم؟

✅ در اینجا می‌خواهیم که قبل از دیدن ساختار دقیق تابع (آنطور که مایکروسافت ? معرفی می‌کند)، ?ذهنیتی از آن داشته باشید.

نحوه استفاده از تابع SWITCH به صورت زیر است:

  1. ابتدا شما ورودی‌های تابع را فراهم می‌کنید. یعنی این موارد:
    • 1️⃣یک عبارت (expression) که به دنبالش هستید.
    • ?لیست مقادیر (values) که در آنها می‌خواهید جستجو می‌کنید.
    • ?لیست نتایج (results) که متناظر با لیست مقادیر است.
    • 1️⃣یک مقدار پیش‌فرض (default) به عنوان خروجی در صورت ناموفق بودن جستجو (اختیاری).
  2. سپس شما تابع SWITCH را می‌نویسید:
    • نوشتن تابع را در ادامه مقاله توضیح می‌دهیم.✍️
    • بعد از آن شما بقیه کار را به تابع SWITCH می‌سپارید.?
  3. آنگاه تابع به این صورت عمل می‌کند:
    • مقدار ورودی اول یعنی expression را در لیست مقادیر (values) لیست ? جستجو می‌کند.
    • اولین جایی که دقیقاً همان مقدار در لیست پیدا کرد را در نظر می‌گیرد،
    • سپس به شکل ↔️ متناظر از لیست نتایج (results)، 1️⃣ یک نتیجه مقدار خروجی را برمی‌گرداند.
    • اگر تابع نتوانست ? عبارت مورد نظر شما را پیدا کند و همچنین شما مقدار پیش‌فرض را وارد کرده باشید، آنگاه مقدار پیش‌فرض (default) را برمی‌گرداند.

 

در ادامه، نحوه دقیق نوشتن این تابع را بررسی می‌کنیم:

نحوه نوشتن تابع SWITCH

بیایید با هم ساختار تابع را ببینیم:

=SWITCH(expression, val1/result1, [val2/result2], ..., [default])

در ساختار بالا:

  • expression: عبارت یا مقداری که می خواهید با لیستی از مقادیر مقایسه شود.
  • val1/result1: در اولین جفت value (مقدار) و result (نتیجه)، مقدار expression با value مقایسه می‌شود. اگر برابر بود، متناظر با آن result برمی‌گردد.
  • val2/result2: [اختیاری] دومین جفت مقدار و نتیجه.
  • default: [اختیاری] مقداری که در صورت عدم تطابق expression با هیچ کدام از مقادیر برگشت داده می شود.

 

در نظر داشته باشید که:

  1. در ساختار این تابع، مقادیر لیست جستجو با عنوان value و مقادیر متناظر با عنوان result نامگذاری شده‌اند.
  2. تابع به دنبال یک value می‌گردد که دقیقاً برابر expression باشد و سپس مقدار result را برمی‌گرداند.
  3. اصطلاحاً می‌گویند که تابع SWITCH به دنبال exact match (یعنی مقداری دقیقاً برابر) است.
  4. همچنین در ساختار بالا جفت‌های لیست مقادیر (values) و لیست نتایج (results) با هم به صورت دوتایی‌های متناظر و به صورت پشت سر هم آمده‌اند؛
  5. و البته اگر خواستید مقدار پیش‌فرض را هم در نظر می‌گیرید.

 

اما اگر بخواهیم تابع SWITCH را به صورت یک تابع ریاضی ببینیم، می‌توانیم تصویر زیر را در نظر بگیریم:

ورودی‌ها و خروجی تابع SWITCH

توجه داشته باشید:

  • در مورد اولین ورودی:
    • محتوای expression می‌تواند یک فرمول دیگر باشد که یک مقدار خاص را برمی گرداند.
    • همچنین می‌تواند مقدار ثابت یا ارجاع به یک سلول باشد.
  • در مورد جفت‌های مقدار و نتیجه یا value/result:
    • محتوای value و result می‌تواند مقدار ثابت، اشاره به سلول یا فرمول باشد.
    • تعداد مقادیر در لیست مقدارها (values) و لیست سوم باید با هم برابر باشد. اگر یکی از این مقادیر را ننویسید، اکسل خطا خواهد داد و به نتیجه دلخواه نخواهید رسید.
    • ترتیب مقادیر در لیست دوم و لیست سوم مهم است.
    • تابع SWITCH فقط اولین تطابق بین expression و value را پیدا می‌کند و به جستجو در لیست ادامه نمی‌دهد.
    • SWITCH می تواند تا 126 جفت مقدار/نتیجه را مدیریت کند.
    • جفت‌های value و result با همدیگر در این تابع نوشته می‌شوند. این کار نوشتن و خواندن مقادیر متناظر را راحت می‌کند چون برای اینکه بفهمید که مقدار یک result متناظر با کدام value بوده است، کافی است به مقدار قبلی آن مراجعه کنید.
  • در مورد مقدار پیش‌فرض:
    • همان‌طور که گفتیم، اگر هیچ کدام از مقادیر valueها با expression مطابقت نداشته باشد، در صورتی که مقدار default را تعیین کرده باشید، همان مقدار به جای نتیجه برگشت داده می شود.
    • برای تنظیم نتیجه پیش فرض کافی است آرگومان نهایی را وارد کنید. یعنی بعد از اتمام جفت‌های مقدار و نتیجه یا همان valueN/resultN (که N به معنی آخرین جفت است)، یک مقدار یا عبارت دیگر نیز بنویسید و اکسل خودش متوجه خواهد شد که منظور شما مقدار default است.
    • اما اگر تابع SWITCH مقدار expression را در لیست values پیدا نکند و مقدار پیش‌فرض هم تعیین نشده باشد، تابع خطای #N/A را برمی‌گرداند.
    • البته ممکن است که مسئله شما طوری باشد که می‌دانید همیشه یک مقدار در لیست values پیدا می‌شود که با expression برابر باشد. در این حالت اگر آرگومان آخر را هم وارد نکنید، مشکلی نیست.

 

یک مثال از نوشتن تابع SWITCH با سه حالت

مثلاً فرض کنید وضعیت سفارش‌های آنلاین شرکت شما سه حالت دارد. این وضعیت‌ها با کدهایی در پایگاه داده مشخص شده‌اند:

  • کد 1: در حال پردازش یا Processing
  • کد 2: ارسال شده یا Shipped
  • کد 3: تحویل شده یا Delivered

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

اما شما می‌خواهید این اطلاعات را به مدیران یا مشتریان شرکت گزارش دهید و می‌خواهید به جای استفاده از اعداد 1، 2 و 3، از عبارات متنی (مثلاً معادل انگلیسی آنها) استفاده کنید تا گزارش قابل فهم‌تر باشد.

اگر داده‌های شما از سطر دوم شروع شود (مثلاً A2)، شما می‌توانید فرمول زیر را ستونی دیگر (مثلاً در ستون C) بنویسید و سپس فرمول را به سایر سلول‌ها کپی کنید:

=SWITCH(A2, 1, "Processing", 2, "Shipped", 3, "Delivered")

در فرمول بالا، ? مسیر ذهنی زیر را دنبال کنید:

  1. تابع SWITCH مقدار سلول A2 را بررسی می‌کند (همان اعداد 1 یا 2 یا 3 که کد وضعیت سفارش است)
  2. اگر مقدار سلول A2 برابر با 1 باشد، عبارت "Processing" را در سلول C2 نمایش می‌دهد.
  3. اگر مقدار سلول A2 برابر با 2 باشد، عبارت "Shipped" را در سلول C2 نمایش می‌دهد.
  4. اگر مقدار سلول A2 برابر با 3 باشد، عبارت "Delivered" را در سلول C2 نمایش می‌دهد.
  5. اگر مقدار سلول A2 هیچ یک از مقادیر 1، 2 و 3 نباشد، اکسل در سلول C2 خطای #N/A خواهد داد.

توجه کنید که در فرمول قبل، مقدار پیش‌فرض را وارد نکرده‌ایم و به همین علت است که اگر تابع SWITCH مقدار مورد نظر را پیدا نکند، خطا می‌دهد.

 

در ادامه این مشکل را رفع می‌کنیم...

 

مثلاً فرض کنید که در ستون A که مقدار 1 و 2 و 3 قرار است وجود داشته باشند، یک حالت دیگر مشاهده شد که به غیر از 1 و 2 و 3 است. در اینصورت چون این حالت برای ما ناشناخته است، می‌توانیم فرمول را به شکل زیر تغییر دهیم:

=SWITCH(A2, 1, "Processing", 2, "Shipped", 3, "Delivered", "Unknown")

توجه کنید که "Unknown" به عنوان مقدار پیش فرض در انتهای تابع SWITCH اضافه شده است.

حالا ? مسیر ذهنی چنین خواهد شد:

  1. تابع SWITCH مقدار سلول A2 را بررسی می‌کند.
  2. اگر مقدار سلول A2 برابر با 1 یا 2 و 3 باشد، به ترتیب عبارت‌های "Processing" و "Shipped" و "Delivered" در سلول C2 نمایش داده خواهد شد.
  3. اما اگر مقدار سلول A2 هیچ یک از مقادیر 1، 2 و 3 نباشد، عبارت "Unknown" در سلول C2 نمایش داده می‌شود.

حالا دیگر تابع SWITCH خطای #N/A نمی‌دهد.

 

بازنویسی مثال یافتن فصل تابع SWITCH همراه با مقدار پیش‌فرض

حالا بگذارید به مثال اول برگردیم…

در آن مثال، می‌خواستیم به ازای هر ماه، فصلی را پیدا کنیم که آن ماه میلادی در آن قرار دارد.

اما مثال را کمی تغییر می‌دهیم و مقدار پیش‌فرض برای آن در نظر بگیریم.

فرض کنید ستونی از داده داریم که محتوای همه سلول‌های آن ماه‌های میلادی نیست. همان‌طور که گفتیم، در این حالت اگر مقدار پیش‌فرض تابع SWITCH را تعیین نکنیم، در حالاتی که محتوای سلول غیر از ماه‌های میلادی است، خطای #N/A را برمی‌گرداند.

البته اگر برگردید و دقت کنید می‌بینید که اولین مثال این مقاله، ما برای جلوگیری از این خطای #N/A، آخرین ورودی تابع SWITCH یعنی مقدار پیش‌فرض را برابر FALSE قرار داده بودیم. دلیل آن این بود که می‌خواستیم خروجی فرمول Nested-IF با خروجی SWITCH برابر باشد. چون اگر دقت کنید اولین فرمول این مقاله، در داخلی‌ترین تابع IF، آخرین پارامتر IF وارد نشده بود! ? یعنی در داخلی‌ترین IF، پارامتر‌ها این بود: A1="December", "Winter" و حالت سوم تابع IF (در حالت FALSE) وارد نشده بود و می‌دانید اگر در تابع IF، مقدار پارامتر سوم را وارد نکنید، در صورت درست نبودن تست تابع، مقدار FALSE برمی‌گردد.

 

ما می‌خواهیم که اگر تابع SWITCH نتوانست در سلول A1 نام یک ماه میلادی را پیدا کند، آنگاه مقدار "Unknown" (به معنی نامشخص) را برگرداند. به معنای اینکه محتوای سلول A1 با هیچ‌کدام از ماه‌های میلادی مطابقت نداشت و برای ما نامشخص است که چیست.

 

در این صورت، آخرین آرگومان تابع SWITCH به "Unknown" تغییر می‌کند:

=SWITCH(A1,"January","Winter","February","Winter","March","Spring","April","Spring","May","Spring","June","Summer","July","Summer","August","Summer","September","Autumn","October","Autumn","November","Autumn","December","Winter","Unknown")

 

صرفاً اگر علاقه‌مند هستید، می‌توانید معادل تابع SWITCH را به صورت IF تودرتو هم بررسی کنید. اگر بخواهیم اولین فرمول این مقاله با این تغییر بازنویسی کنیم، می‌توانیم عبارت Unknown را در آخرین آرگومان ورودی و در داخلی‌ترین تابع IF وارد کنیم (آخرین پارامتر قبل از بسته شدن پرانتزها):

=IF(A1="January", "Winter",
    IF(A1="February", "Winter",
        IF(A1="March", "Spring",
            IF(A1="April", "Spring",
                IF(A1="May", "Spring",
                    IF(A1="June", "Summer",
                        IF(A1="July", "Summer",
                            IF(A1="August", "Summer",
                                IF(A1="September", "Autumn",
                                    IF(A1="October", "Autumn",
                                        IF(A1="November", "Autumn",
                                            IF(A1="December", "Winter", "Unknown")
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )
)

استفاده از عملگرهای منطقی در تابع SWITCH

? فرض کنید می‌خواهید معدل یک دانش‌آموز را به عبارت‌هایی چون +A تا F تبدیل کنید. حتماً این شکل از ارزیابی کیفی را در سیستم‌های آموزشی جهان مشاهده کرده‌اید.

? برای انجام این کار در اکسل روش‌های مختلفی وجود دارد. اما اگر بخواهید از تابع SWITCH استفاده کنید با یک ‼️چالش مواجه خواهید شد.

 

? مثلاً ... شما می‌خواهید به معدل بیشتر مساوی 16 و کمتر از 18 (یعنی 16 تا 18)، عبارت A اختصاص دهید. حال آنکه تابع SWITCH نمی‌تواند تمام اعداد اعشاری بین 16 تا 18 را در نظر بگیرد. در واقع عبارت منطقی "بزرگتر مساوی 16" برای SWITCH به طور مستقیم قابل استفاده نیست.

 

✅ در واقع تابع SWITCH در اکسل برای مقایسه مستقیم محتواهایی از جنس مقادیر ثابت یا ارجاعات سلولی طراحی شده است، نه برای ارزیابی فرمول‌ها و عبارات منطقی حاوی عملگرهایی مانند ">"یا "<=". البته امکان استفاده از آرایه و متغیر را هم دارید که البته نمی‌توانند حاوی فرمول و عبارات منطقی باشند.

این تابع به دنبال مطابقت دقیق بین مقدار مورد ارزیابی (expression) و مقادیر ورودی (values) است که به آن Exact Match می‌گویند.

 

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

در اینجا کاربران حرفه‌ای اکسل پیشنهاد می‌کنند که با یک ? ترفند این موضوع را دور بزنید! ??

 

?? کل ترفند بر این اساس است که در ورودی اول (expression) از مقدار TRUE استفاده کنید و در لیست مقادیر (values)، عبارات منطقی مورد نظر خود را قرار دهید.

 

✍️با این کار تابع SWITCH بر صحت عبارات منطقی تمرکز می‌کند. در واقع، با این کار SWITCH مجبور می‌شود که هر یک از عبارات منطقی را به عنوان ورودی بررسی کند و فرمول را تجزیه و تحلیل کند تا عبارت TRUE (معادل همان ورودی اول) را پیدا کند.

 

در ادامه پیرامون این موضوع 2️⃣ دو مثال می‌زنیم:

 

1️⃣ ماه‌های میلادی و تعیین فصل آنها (با عملگر مساوی)

به کمک ترفندی که گفته شد، در مثال قبلی می‌توانید فرمول را بازنویسی کنید و البته همان نتیجه را می‌دهد:

=SWITCH(
TRUE,
A1="January", "Winter",
A1="February", "Winter",
A1="March","Spring",
A1="April", "Spring",
A1="May", "Spring",
A1="June", "Summer",
A1="July", "Summer",
A1="August", "Summer",
A1="September", "Autumn",
A1="October", "Autumn",
A1="November", "Autumn",
A1="December", "Winter",
"Unknown"
)

در تابع بالا، ? مسیر ذهنی زیر را دنبال کنید:

  1. در ورودی اول مقدار TRUE قرار گرفته است که عبارتی همیشه درست است.
  2. حالا تابع SWITCH در لیست مقادیر (values) به دنبال مقداری می‌گردد که TRUE باشد.
  3. اما لیست مقادیر (یا valueها) به صورت A1="نام ماه میلادی" نوشته شده‌اند که در واقع یک عبارت منطقی است.
  4. تابع SWITCH تک تک این ورودی‌ها را بررسی می‌کند و اولین جایی که عبارت منطقی درست بود، مقدار متناظر آن (نام فصل میلادی) را برمی‌گرداند.
  5. اگر درباره سلول A1 هیچ یک از عبارت‌های منطقی (A1= "نام ماه میلادی") صحت نداشت، معنی آن این است که در سلول A1 مقداری قرار گرفته که با هیچ یک از نام‌های میلادی تطابق ندارد.
  6. بنابراین تابع SWITCH هیچ‌یک از عبارت‌های منطقی را صحیح یا TRUE ندانسته و در نتیجه مقدار پیش فرض (Unknown) را برمی‌گرداند.

 

2️⃣ رتبه‌بندی کیفی معدل با تابع SWITCH (با عملگر بیشتر مساوی)

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

فرض کنید که می‌خواهیم معدل دانش آموز بر اساس معیارهای زیر رتبه‌بندی شود:

  • A+: معدل 18 یا بالاتر
  • A: معدل 16 تا 18
  • B: معدل 14 تا 16
  • C: معدل 12 تا 14
  • D: معدل 10 تا 12
  • F: معدل زیر 10

اگر معدل دانش‌آموزان در ستون A باشد و از سلول A1 شروع شود، آنگاه می‌توان در ستون دیگری این تابع نوشت:

=SWITCH(
TRUE,
A1 <= 18, "A+",
A1 <= 16, "A",
A1 <= 14, "B",
A1 <= 12, "C",
A1 <= 10, "D",
TRUE, "F"
)

در مثال بالا، فرض کنید سلول A1 برابر 17 باشد، ? مسیر ذهنی زیر در نظر بگیرید:

  1. ابتدا تابع SWITCH پارامتر اول (Expression) را بررسی می‌کند که مقدار آن TRUE است.
  2. مقدار TRUE همیشه درست است و حالا تابع به بررسی مقادیر خود می‌پردازد (یعنی valueها).
  3. حالا تابع تک تک عبارت‌های شرطی را بررسی می‌کند تا مقدار TRUE را در آن‌ها پیدا کند.
  4. تابع SWITCH از اولین عبارت شرطی شروع به بررسی می‌کند:
    • مقایسه A1 با 18: آیا 17 >= 18؟ خیر.
    • مقایسه A1 با 16: آیا 17 >= 16؟ بله. (تابع همین جا بررسی را تمام می‌کند و ادامه نمی‌دهد❗)
  5. اولین عبارت شرطی که ارزش آن TRUE است، عبارت شرطی دوم بوده است.
  6. به طور متناظر تابع SWITCH مقدار متنی "A" را به عنوان خروجی برمی‌گرداند.

 

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

  • عبارت‌های منطقی تابع SWITCH، به کمک عملگر بزرگتر مساوی نوشته شده است و اعداد مرزی یا آستانه‌ای (18، 15، 12، 10) در این عبارته‌های شرطی به ترتیب از بزرگ به کوچک هستند.
  • می‌توانیم همین تابع به شکل با مقادیر آستانه‌ای برعکس بنویسیم و همین نتیجه را بگیریم.
  • اگر می‌خواستیم ترتیب نوشتن را عوض کنیم، اعداد را از کوچک به بزرگ انتخاب می‌کردیم (10، 12، 15، 18) و نوع عملگر را کوچکتر انتخاب می‌کردیم (برعکس بزرگتر مساوی).

در نتیجه فرمول قبل را می‌توان به شکل زیر هم نوشت و همان نتیجه را گرفت:

=SWITCH(
TRUE,
A1 < 10, "F",
A1 < 12, "D",
A1 < 14, "C",
A1 < 16, "B",
A1 < 18, "A",
TRUE, "A+"
)

اولین جایی که تابع SWITCH مقدار TRUE را پیدا کند (عبارت شرطی صحیح باشد)، سایر عبارتهای منطقی بررسی نخواهد شد. به همین دلیل است که عبارت‌های شرطی را با اعداد مرتب شده می‌نویسیم.

 

مقایسه تابع SWITCH و تابع IFS

  • تشابه:
    • مشابه تابع IFS، تابع SWITCH به شما امکان می دهد بدون نیاز به تو در تو کردن چندین IF، تستهای مختلفی را روی یک مقدار انجام دهید. بنابراین هر دو باعث خوانایی و ساده شدن فرمول‌ها می شوند.
    • ضمناً هر دو تابع SWITCH و IFS به صورت جدید در اکسل 2019 و اکسل 365 معرفی شدند و با ساختاری ساده و خوانا، فرمول‌نویسی را برای جستجوی یک مقدار در لیست آسان می‌کند.
  • تفاوت:
    • یک مزیت SWITCH نسبت به IFS این است که expression فقط یک بار در تابع ظاهر می شود و نیازی به تکرار ندارد.
    • تابع SWITCH مقدار expression را به صورت دقیق یعنی Exact Match مقایسه می‌کند و امکان استفاده از عملگرهای مقایسه ای وجود ندارد.
    • در مقابل، تابع IFS برای هر شرط نیاز به یک expression دارد ولی می‌توانید از عملگرهای منطقی در صورت نیاز استفاده کنید.

 

تفاوت IF تودرتو و SWITCH

✅ دوباره تکرار می‌کنیم که:

  • اگرچه:
    • برخلاف Nested-IF که نیاز به تکرار عبارت منطقی برای هر مقایسه دارند، تابع SWITCH فقط یک بار شرط را بررسی می کند که این امر باعث افزایش کارایی و سرعت پردازش می شود.
    • نوشتن تابع SWITCH راحت‌تر است و کوتاه‌تر است. همچنین خواناتر بوده و ویرایش آن نیز ساده‌تر است.
  • ولی:
    • تابع SWITCH مقدار ورودی را به صورت Exact Match مقایسه می‌کند و نمی‌توانید در حالت عادی از عملگرهای منطقی استفاده کنید. برای این‌کار باید از ترفندهای خاصی مانند آنچه در این مقاله مثال زدیم استفاده کنید. اما برای توابع IF تودرتو این محدودیت مطرح نیست.
    • توجه کنید که فقط حالتهای خاصی از IF تودرتو (Nested-IF) را می‌توان با SWITCH نوشت و در خیلی از موارد نیاز است که از همان فرمول‌نویسی تودرتو استفاده کنیم و نه SWITCH.

 

جمع بندی

  • تابع SWITCH در اکسل به شما این امکان را می دهد تا به سادگی و با خوانایی بیشتر، مقادیر مختلف را با لیست های مختلف مقایسه کنید و اولین نتیجه متناظر با آن جایگاه لیست را به عنوان خروجی دریافت کنید.
  • تابع SWITCH زحمت نوشتن یک IF تو در تو را از روی دوش شما برمی‌دارد و همچنین دقت و کارایی شما در طراحی و ویرایش شرط‌های تودرتو افزایش می‌دهد.
  • برای استفاده از عملگرهای شرطی در تابع SWITCH، پارامتر اول را TRUE بنویسید و سایر شرط‌ها به شکل صحیح بعد از آن اضافه کنید.
  • فرمول‌نویسی با SWITCH، IFS و یا Nested-IF حتی اگر جواب‌های یکسانی بدهند ولی امکانات متفاوتی را در اختیار شما قرار می‌دهند.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
تابع DATE در اکسل

تابع DATE

بیشتر بخوانید
تابع ABS در اکسل

تابع ABS

بیشتر بخوانید
تابع XOR در اکسل

تابع XOR

بیشتر بخوانید