یکی از توابع شرطی اکسل، تابع Switch است که در اکسل ۲۰۱۶ اضافه شده و در نسخههای قبل وجود ندارد. کاربرد تابع Switch شبیه به IF است با این تفاوت که فرمولهای طولانی و پیچیده شامل چند IF را به فرمول سادهتری تبدیل میکند. دقت کنید که اگر از تابع Switch در فرمول نویسی در اکسل ۲۰۱۳ و نسخههای قدیمیتر استفاده کنید، با توجه به عدم وجود آن، ارور #NAME? ظاهر میشود.
در ادامه مطلب به توضیح بیشتر در مورد تابع سوییچ در اکسل میپردازیم و با مثالهای ساده، روش کار را توضیح میدهیم. با سیارهی آیتی همراه باشید.
سینتکس تابع Switch در اکسل
قبل از بررسی مثالهای ساده، بهتر است سینتکس کلی استفاده از تابع سوییچ را بررسی کنیم. فرمول تابع Switch در اکسل در حالت کلی به صورت زیر است:
=SWITCH(e,v1,r1,v2,r2,d)
در فرمول فوق ۶ آرگومان ذکر شده و میتوان آرگومانها را افزایش داد. آرگومانها به ترتیب موارد زیر است:
- e عبارت یا مقداری است که مورد بررسی قرار میگیرد.
- V1 و V2 و موارد بعدی، مقدار یا مقادیری است که اولین آرگومان یا e با آن مقایسه می شود.
- R1 و R2 و موارد بعدی، نتیجه یا نتایجی است که در صورت برابر بودن V1 و V2 و غیره با e به عنوان خروجی تابع Switch در نظر گرفته میشود.
- آرگومان آخر یا d یک آرگومان اختیاری است که اگر آرگومان اول با هیچ یک از مقادیر V1 و V2 و غیره برابر نباشد، به عنوان خروجی تابع چاپ میشود. اگر d را خالی بگذارید، خروجی تابع Switch ارور #N/A خواهد بود.
توجه کنید که V1 و R1 و موارد بعدی، به صورت جفتجفت است و حداکثر میتوان ۱۲۶ جفت داده برای مقایسه کردن و چاپ نتیجه، در تابع Switch وارد کرد. لذا آرگومانهای این تابع در کمترین حالت، ۳ عدد است که شامل e و V1 و R1 میشود و در بیشترین حالت، ۱۲۶ جفت داده به اضافهی e و d است.
مثال کاربرد تابع Switch در اکسل
طبعاً با ترکیب کردن چند IF تو در تو میتوانید فرمولی طولانی برای این مسأله ساده بنویسید. برای اطلاعات بیشتر به مقالهی زیر توجه فرمایید:
استفاده از تابع Switch برای این مثال، فرمول نویسی اکسل را ساده و کوتاه میکند. نمره یا سطح دانشآموز که سه حالت A و B و C است، آرگومان اول خواهد بود. آرگومانهای بعدی به صورت جفتجفت تعریف میشود.
به عنوان مثال برای حالتی که نمره A باشد، عبارت Automatically advance to next level به معنی ادامه خودکار پیشروی به سطح بعدی آموزش چاپ میشود و برای سطح B، ادامه آموزش در سطح فعلی یا Continue at this level چاپ میشود. برای سطح C نیز عبارت Move down to previous level به معنی کاهش سطح آموزش چاپ میشود.
اگر مقادیر عددی نیست و قصد مقایسه کردن دارید، توجه کنید که عبارتهای متنی را بین ۲ دابلکوتیشن یا "" قرار دهید.
لذا فرمول کلی به این صورت خواهد بود:
=SWITCH(b2,"A","Automatically advance to next level","B","Continue at this level","C","Move down to previous level")
برای جلوگیری از نمایش ارور، میتوان آرگومان آخر را نیز وارد کرد. عبارت GRADE REQUIRED به معنی وارد کردن نمره لازم است را به عنوان آرگومان آخر وارد میکنیم تا اگر نمره دانشآموزی وارد نشده بود، در ستون C عبارت GRADE REQUIRED
=SWITCH(b2,"A","Automatically advance to next level","B","Continue at this level","C","Move down to previous level",GRADE REQUIRED)
پس از وارد کردن این فرمول در سلول C2 و زدن کلید Enter، میتوانید سلول C2 را با درگ کردن مربع کوچک پایین و راست سلول به سمت پایین، در سلولهای بعدی کپی کنید تا همین فرمول برای سایر ردیفها تکرار شود و نتیجه ظاهر شود. حاصل کار به این صورت خواهد شد:
استفاده از IFS به جای Switch
بیشتر اوقات استفاده کردن از IFS به جای Switch نسبتاً ساده است اما به هر حال بخش مقایسه کردن، تکراری میشود. مثالی که بررسی کردیم را در نظر بگیرید، اگر بخواهید همین فرمول را به کمک تابع IFS اکسل بنویسید، فرمول به صورت زیر خواهد بود:
=IFS(B2="A","Automatically advance to next level",B2="B","Continue at this level",B2="C","Move down to previous level")
همانطور که مشاهده میکنید در فرمول فوق عبارت B2= چند بار تکرار شده است در حالی که با استفاده از تابع سوییچ، نیازی به تکرار کردن این عبارت نیست. لذا استفاده از سوییچ کمی سادهتر از کار با تابع IFS در اکسل است.
به همین ترتیب اگر بخواهید به جای IFS یا Switch از IF استفاده کنید، باید چند مرتبه نام تابع IF را تایپ کنید و به دقت پرانتزها را باز و بسته کنید و در نهایت فرمول پیچیده و طولانی میشود و شاید حین نوشتن فرمول، اشتباهات سهوی زیادی رخ بدهد.
تابع دیگری که برای مقایسه و چاپ نتیجه مناسب است، XLOOKUP است که در این تابع لیست مقادیر در یک جدول مجزا قرار دارد در حالی که تابع Switch لیست مقادیر را در یک فرمول جمع میکند.
اشکال تابع Switch نسبت به IFS
نقطه ضعف تابع Switch در نوشتن شرط است. به عنوان مثال اگر بخواهید اعداد را مقایسه کنید و در صورت بزرگتر یا کوچکتر بودن، نتیجهی مربوطه چاپ شود، تابع IFS مناسب است چرا که نمیتوانید در تابع Switch از علامت < یا > استفاده کنید. تابع سوییچ فقط برای نوشتن شرط از نوع مساوی کاربرد دارد که معادل تایپ کردن علامت = حین کار با تابع IFS است. لذا تابع IFS کاربرد جامعتری نسبت به Switch دارد.
mfسیارهی آیتی