تابع switch در اکسل
تابع SWITCH یکی از توابع مفید و خوانا در اکسل است که برای مقایسه یک عبارت با چند مقدار مشخص و برگرداندن نتیجه متناظر استفاده میشود. این تابع خواناتر و مختصرتر از زنجیرهای از توابع IF تو در توست و جایگزین مناسبی برای برخی از موارد استفاده از CHOOSE یا VLOOKUP ساده به شمار میآید.
قابلیتها و سازگاری
تابع SWITCH در نسخههای جدید اکسل مانند Excel for Microsoft 365 و Excel 2019 در دسترس است. این تابع در نسخههای قدیمیتر مثل Excel 2013 یا 2010 وجود ندارد؛ در این نسخهها باید از IF، CHOOSE، یا ترکیب VLOOKUP/INDEX-MATCH استفاده کنید.
سینتکس تابع
سینتکس کلی به صورت زیر است:
=SWITCH(expression, value1, result1, [value2, result2], ..., [default])توضیح پارامترها:
- expression — مقدار یا عبارت مورد مقایسه.
- valueN — مقدارهایی که قرار است با expression مقایسه شوند.
- resultN — نتیجهای که در صورت تطابق با valueN برگردانده میشود.
- default (اختیاری) — اگر هیچ مقادیری مطابق نشد، این مقدار بازگردانده میشود. در صورت عدم وجود default و عدم تطابق، خطای #N/A رخ میدهد.
ویژگیهای مهم
- مقایسهها بهصورت پیشفرض غیر حساس به حروف بزرگ/کوچک (case-insensitive) هستند.
- مقایسهها دقیق هستند؛ الگوهای wildcard بهصورت مستقیم پشتیبانی نمیشوند، ولی با ترفندهایی مثل استفاده از SWITCH(TRUE, …) و توابع متنی قابل شبیهسازیاند.
- برای تعداد کم تا متوسط از تطابقهای دقیق، تابع بسیار خواناتر و سریعتر تنظیم میشود؛ اما برای جستجو در جدولهای بزرگ، XLOOKUP یا INDEX/MATCH مناسبتر است.
مثالهای عملی
مثال 1: تبدیل شماره روز هفته به نام فارسی
=SWITCH(A2,1,"دوشنبه",2,"سهشنبه",3,"چهارشنبه",4,"پنجشنبه",5,"جمعه","تعطیل/نامشخص")این فرمول مقدار سلول A2 را بررسی میکند و با اعداد 1 تا 5 مقایسه کرده و نام روز مربوطه را برمیگرداند. اگر مقدار A2 برابر هیچکدام نباشد، عبارت “تعطیل/نامشخص” بازگردانده میشود.
مثال 2: تعیین رتبه بر مبنای نمره با استفاده از SWITCH و تکنیک شرطی
=SWITCH(TRUE, A2>=90, "A", A2>=80, "B", A2>=70, "C", A2>=60, "D", "F")در اینجا از الگوی SWITCH(TRUE, …) استفاده شده است. تابع ابتدا عبارت TRUE را به عنوان expression قرار میدهد و سپس هر جفت مقدار/نتیجه را بهعنوان شرط مینویسد. وقتی شرطی TRUE شود، نتیجه متناظر برگردانده میشود. این روش شبیه تابع IFS است و برای بازهها کاربردی است.
مثال 3: تشخیص وجود یک زیررشته در متن (استفاده از SEARCH)
=SWITCH(TRUE, ISNUMBER(SEARCH("test", A2)), "حاوی test", ISNUMBER(SEARCH("exam", A2)), "حاوی exam", "ندارد")در این فرمول از SEARCH برای یافتن زیررشته استفاده شده و ISNUMBER برای تبدیل نتیجه به TRUE/FALSE. سپس SWITCH بر اساس اولین شرط درست، خروجی مناسب را میدهد.
مثال جدولوار برای سادگی خواندن
| کد وضعیت | توضیح |
|---|---|
| 1 | تکمیل شده |
| 2 | در حال انجام |
| 3 | متوقف |
معادل فرمولی برای نمایش توضیح:
=SWITCH(B2,1,"تکمیل شده",2,"در حال انجام",3,"متوقف","نامشخص")این فرمول مقدار سلول B2 را به سه حالت نگاشته و در صورت عدم تطابق “نامشخص” را نمایش میدهد.
مقایسه SWITCH با توابع دیگر
- SWITCH vs IF: برای چندین شرط دقیق، SWITCH خواناتر و کمخطاتر است؛ اما IF برای شرایط زنجیرهای با محاسبات متفاوت هم کاربرد دارد.
- SWITCH vs IFS: هر دو میتوانند شرایط متوالی را بررسی کنند؛ IFS برای شرایط شرطی با ارزیابی مستقیم شرطها طراحی شده و SWITCH(TRUE, …) میتواند همان کار را انجام دهد.
- SWITCH vs XLOOKUP/VLOOKUP: اگر دادهها در جدول سازمانیافته و حجم بالا دارند، XLOOKUP یا VLOOKUP مناسبتر و مقیاسپذیرترند. SWITCH برای نگاشتهای ساده و ثابت مناسب است.
نکات و بهترین شیوهها
- اگر تعداد کیسها زیاد است یا دادهها پویا هستند، به جای نوشتن دهها جفت value/result، یک جدول جدا بسازید و از XLOOKUP یا INDEX-MATCH استفاده کنید.
- برای جلوگیری از خطای #N/A، همیشه یک مقدار default تعریف کنید.
- توجه داشته باشید مقایسهها به صورت غیر حساس به حروف بزرگ/کوچک انجام میشوند؛ در صورت نیاز به تشخیص حروف از توابع EXACT یا ترکیبات دیگر استفاده کنید.
- از SWITCH(TRUE, …) برای بررسی بازهها استفاده کنید ولی از پیچیده شدن یک فرمول طولانی بپرهیزید؛ در صورت نیاز از VBA یا جدول کمکی استفاده کنید.
نمونه پیشرفته — ترکیب SWITCH با CONCAT و TEXT
=CONCAT("وضعیت: ", SWITCH(C2,1,"تکمیل شده",2,"در حال انجام",3,"متوقف"), " — تاریخ: ", TEXT(D2,"yyyy/mm/dd"))این فرمول با استفاده از CONCAT، نتیجه SWITCH را با تاریخ فرمتشده ترکیب میکند تا یک رشته توضیحی کامل بسازد. TEXT برای قالببندی تاریخ استفاده شده است تا نمایش یکنواختی داشته باشید.
خطاها و رفع آنها
در صورت استفاده از تعداد نامتوازن پارامترها (مثلاً جفتهای ناقص) ممکن است خطا دریافت کنید. همچنین اگر default را ننویسید و هیچ تطابقی رخ ندهد، مقدار خطای #N/A برگردانده میشود—برای جلوگیری از آن از default یا تابع IFERROR استفاده کنید.
نتیجهگیری
تابع SWITCH ابزاری قدرتمند برای نگاشت مقادیر ثابت به نتایج مشخص است و خوانایی فرمولها را بسیار افزایش میدهد. برای وضعیتهای پیچیدهتر یا مقیاسپذیری بالاتر بهتر است از XLOOKUP یا جداول مرجع استفاده کنید. در سایر موارد، SWITCH میتواند جایگزین مناسبی برای IF های تو در تو باشد و کدنویسی و نگهداری فایل اکسل را سادهتر کند.
آیا این مطلب برای شما مفید بود ؟




