تابع Choose و مثال های کاربردی

ترکیب های تابع Choose
۴.۶/۵ - (۲۸ امتیاز)

ترکیب های تابع Choose در اکسل

همونطور که قبلا گفته شد، فرمول نویسی حرفه ای اصولی داره که حتما باید به اونها مسلط باشیم. بعد از تسلط به اصول فرمول نویسی، باید به کارکرد هر تابع و ورودی ها و خروجی های آن مسلط باشیم تا بتونیم به ترکیب توابع مختلف بپردازیم و مسائل مختلف رو از این طریق حل کنیم.  یکی از توابعی که در ظاهر خیلی کاربرد نداره، ولی در ترکیب با سایر توابع میتونه کاربردهای فوق العاده مفیدی داشته باشه تابع Choose هست. در آموزش معرفی تابع Choose به تشریح آرگومان ها و ورودی و خروجی این تابع پرداختیم. در این آموزش چندین مثال کاربردی از ترکیب های تابع Choose مفید ارائه میکنیم:

۱- جستجوی بازه ای با استفاده از تابع Choose

یکی از سوالاتی که خیلی زیاد پرسیده میشه این هست که یک جدولی داریم بصورت شکل ۱، میخواهیم برای یک سری افراد که امتیازهای مختلفی کسب کرده اند، رتبه بندی مرتبط با هر امتیاز از جدول شکل ۱ نمایش داده بشه. مثلا برای امتیاز ۶۵ کلمه متوسط نمایش داده بشه. این کار ۳ تا راه حل پیشنهاد میدیم:

جدول رده بندی

شکل ۱- جدول رده بندی

۱-۱- حل با استفاده از تابع VLOOKUP

 این روش در مقاله جستجوی بازه ای تشریح شده است.

۱-۲- حل با استفاده از Nested If یا If تو در تو

در این روش با استفاده از تابع IF مسئله حل میشه:

=IF(E2>۱۵۰;”عالی”;IF(E2>۱۰۰;”خوب”;IF(E2>۵۰;”متوسط”;”ضعیف”)))

جستجوی بازه ای با استفاده از Nested If

شکل ۲- ترکیب های تابع Choose – جستجوی بازه ای با استفاده از Nested If

۱-۳- حل با استفاده از ترکیب Choose و توابع منطقی

یکی از ترکیب های تابع Choose جستجوی بازه ای است. برای اینکه این مسئله رو با استفاده از تابع Choose و عملگرهای منطقی حل کنید از فرمول زیر استفاده کنید:

=CHOOSE ( (E2>150) + (E2>100) + (E2>50) + (E2>0); “” ; ” خوب ” ; ” متوسط ” ; ” ضعیف عالی ” )

جستجوی بازه ای با استفاده از Choose و Logical

شکل ۳- جستجوی بازه ای با استفاده از Choose و Logical

این فرمول چطور کار میکنه؟

هموطور که میدونید، خروجی گزاره های مقایسه ای (Logical)، True/False هست. یعنی اگر بخوایم مثال بالا رو شرح بدیم، به این شکل خواهد بود:

چون عدد ۱۰۱ از ۰، ۵۰ و ۱۰۰ بیشتره، ۳ تا True خواهیم داشت و چون از ۱۵۰ کمتره، یک False خواهیم داشت.

=CHOOSE ( FALSE + TRUE + TRUE + TRUE ; “” ; ” خوب ” ; ” متوسط ” ; ” ضعیف عالی ” )

از طرفی میدونیم که گزاره های منطقی True/False متن نیستند و مقدار دارند. مقدار True برابر با ۱ و مقدار False برابر با ۰ هست. پس نتیجه فرمول بالا بصورت زیر خواهد بود:

=CHOOSE ( 0 + 1 + 1 + 1 ; “” ; ” خوب ” ; ” متوسط ” ; ” ضعیف عالی ” )

پس فرمول نهایتا بصورت زیر درمیاد:

=CHOOSE ( 3 ; “” ; ” خوب ” ; ” متوسط ” ; ” ضعیف عالی “ )

و با توجه به مقدار ۳ در آرگومان اول، فرمول، سومین مقدار از چهار مقدار، یعنی “خوب” رو بر میگردونه.

 

۲- جستجوی بازه ای برای اعمال محاسبات متنوع

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

=CHOOSE( (E2>100) + (E2>50) + (E2>0) ; 5%*E2 ; 7%*E2 ; 9%*E2 )

جستجوی بازه ای و اعمال محاسبات متنوع با Choose

شکل ۴- جستجوی بازه ای و اعمال محاسبات متنوع با Choose

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

۳- تولید داده تصادفی با تابع Choose

از تابع Choose میشه برای تولید داده تصادفی استفاده کرد. مثلا فرض کنید داده های طیف لیکرت (عالی، خوب، متوسط، بد، خیلی بد) رو بصورت رندوم تولید کنید. برای این کار از ترکیب این تابع با Randbetween استفاده میکنیم:

=CHOOSE ( RANDBETWEEN (1;5) ; “عالی” ; “خوب” ; “متوسط” ; “بد” ; “ضعیف” )

تابع Randbwetween عدد تصادفی بین ۱ تا ۵ تولید میکنه و هر بار با توجه به عدد تولید شده، یکی از پنج مقدار تعیین شده رو به عنوان خروجی به ما میده.

نکته:
توجه داشته باشید که توابع Randbetween  و Today که در این مقاله مورد استفاده قرار گرفته اند از دسته توابع Volitale هستند. اطلاعات بیشتر در خصوص این توابع رو میتونید در مقاله افزایش سرعت فایل اکسل مطالعه کنید.

 

۴- جستجوی عقبگرد Backward Vlookup

حتما تا بحال به این موضوع برخورد کردید که بخواید مقداری رو در یک جدول Vlookup کنید و داده متناظر با اون رو در ستون های قبلی فراخوانی کنید. همونطور که میدونید، Vlookup ذاتا بصورت Forward یا رو به جلو هست. برای همین باید این اصل رعایت بشه. در مثال زیر میبینید که چطور با استفاده از تابع Choose چینش Table در این تابع رو تعیین میکنیم.

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

جدول اطلاعات افراد

شکل ۵- جدول اطلاعات افراد

برای حل این مسئله از تابع Choose برای جابجا کردن ستون ها در دل فرمول استفاده میکنیم. به فرمول زیر دقت کنید. {۲,۱} چینش رو تعیین میکنه. در واقع داره میگه دو ستون B و D رو با این ترتیب کنار هم قرار بده: اول D و بعد B.

=CHOOSE ( {1,2} ; D2:D4 ; B2:B4 )

حالا این فرمول رو به عنوان آرگومان سوم یعنی Table_Array در تابع Vlookup قرار میدیم.

=VLOOKUP ( B6 ; CHOOSE ({1,2} ; D2:D4 ; B2:B4 ) ; 2 ; 0)

جستجوی عقبگرد Backward Vlookup

شکل ۶- ترکیب های تابع Choose – جستجوی عقبگرد Backward Vlookup

5-  استخراج نام ماه یا روز هفته با توجه به تاریخ

فرض کنید میخواهیم نام ماه یا روز هفته رو با توجه به تاریخ روز استخراج کنیم. همونطور که قبلا در مقاله مربوط به تاریخ در اکسل توضیح داده شد، تابع Today تاریخ روز سیستم و تابع Month ماه یک رشته تاریخ رو به عدد بر میگردونه. یعنی اگر ماه آوریل باشه، تابع Month عدد ۴ رو به ما نشون میده. پس برای این که بتونیم نام ماه مورد نظر رو استخراج کنیم، کافیه فرمول زیر رو بنویسیم:

=CHOOSE ( MONTH ( TODAY () ) ; “Jan” ; “Feb” ; “Mar” ; “Apr” ; “May” ; “Jun” ; “Jul” ; “Aug” ; “Nov” ; “Sep” ; “Dec”)

این تابع اول تاریخ روز سیستم رو نمایش میده، بعد شماره ماه مربوطه رو تعیین میکنه و بعد با توجه به عدد استخراج شده، ماه مورد نظر نمایش داده میشه.

نکته:
دقت داشته باشید که ترتیب آرگومان ها در تابع Choose خیلی مهمه. مثلا در اینجا ترتیب ماه های میلادی از اولین ماهه تا دوازدهمین ماه رعایت شده است.

 

سوال: همین مثال بالا رو میتونید در خصوص روزهای هفته هم حل کنید. راه حل پیشنهادیتون رو در ادامه و در قالب کامنت ثبت کنید.

دانلود فایل این آموزش

برای دانلود مثال های تابع Choose در اکسل روی دکمه زیر کلیک کنید

آواتار
182

فارغ التحصیل لیسانس مهندسی صنایع، ارشد مدیریت صنعتی از دانشگاه تربیت مدرس و عاشق اکسل هستم. از سال 1388 که ترم 2 لیسانس بودم، به توصیه استاد مشاورم شروع به خوندن اکسل بصورت حرفه ای کردم و همچنان در حال مطالعه و یادگیری و البته آموزش به بقیه هستم.

دیدگاه کاربران
  • محمد دریس ۱۷ شهریور ۱۳۹۹ / ۹:۳۶ ق٫ظ

    سلام و خسته نباشید
    بنده در شیت اول، سه سلول با عنوان نام، نام خانوادگی و نام پدر دارم و یک جدول با دو فیلد تاریخ و مبلغ دریافتی، در شیت دوم هم جدولی با فیلدهای نام، نام خانوادگی، نام پدر، تاریخ، مبلغ دریافتی دارم که پر از مشخصات نفرات مختلف و مبالغی هست که دریافت کردند، الان می خوام وقتی در شیت اول نام، نام خانوادگی و نام پدر شخصی رو وارد کنم، در جدول کلیه تاریخ و مبالغ دریافتی شخص به تفکیت (نمی خوام مثل Sumifs مجموع فقط بیاد)، قرار بگیرند.
    با تشکر

    • آواتار
      حسنا خاکزاد ۲۴ دی ۱۳۹۹ / ۱:۵۵ ب٫ظ

      درود
      از تابع vlookup استفاده کنید

  • محسن ۱۹ فروردین ۱۳۹۹ / ۱۱:۵۳ ق٫ظ

    سلام خسته نباشی
    میشه با استفاده از vlook up که تو شیت دیگه نوشتیم…یه داده رو از یه جدول تو یه شیت دیگه استخراج کنیم البته به صورت عقبگرد یا با تابع دیگه ای میشه این کارو کرد؟

  • رضا هادی ۸ بهمن ۱۳۹۸ / ۱۱:۳۸ ق٫ظ

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

  • ابراهیم ۱۷ مهر ۱۳۹۸ / ۶:۲۹ ب٫ظ

    با عرض سلام وخسته نباشید فرض کنید بین سلولهای b1تا b10 هر بار قراره یک عدد وارد بشه وهمیشه از بین این اعداد مقدار آخرین عدد فقط درسلول a1درج بشه روش کار چطوره؟

    • آواتار
      حسنا خاکزاد ۲۱ مهر ۱۳۹۸ / ۹:۴۳ ب٫ظ

      درود بر شما
      میتونید با ترکیب توابع counta و index ، آخرین سلول پر شده رو پیدا کنید

  • V.1368.m ۲۷ فروردین ۱۳۹۸ / ۳:۵۳ ب٫ظ
    =CHOOSE(WEEKDAY(TODAY();16);K4;K5;K6;K7;K8;K9;K10)

    روزهای هفته به ترتیب در بازهk4:k10 می نویسیم

  • سعید ۱۱ فروردین ۱۳۹۸ / ۱۱:۱۴ ق٫ظ

    با سلام و عرض معذرت
    آیا می شود در سلول A1 نوشت که برو در سلول C1 عبارت “فرم” را بنویس؟ (در حالیکه سلول C1 خودش دارای هیچگونه فرمولی نبوده و خالی است)
    اگر جواب مثبت است لطفا بفرمایید با چه فرمولی اینکار انجام می شود.
    با تشکر و سپاس فراوان

    • آواتار
      حسنا خاکزاد ۱۱ فروردین ۱۳۹۸ / ۱۱:۱۷ ق٫ظ

      درود بر شما
      با فرمول خیر نمیشه

      باید کد نویسی کنید (VBA)

  • سعید ۴ فروردین ۱۳۹۸ / ۹:۳۶ ق٫ظ

    با سلام و عرض ادب
    در یک شیت اکسل می خواهیم تیتر (عنوان) جدول، در سطر اول و وسط راستای افقی جدول قرار گیرد. اما از آنجایی که عرض جدول متغیر هست محل تیتر هم در سطر اول، متغیر و تابع عرض آن است. با تابع و فرمول نویسی در کلیه سلولهای سطر اول این امکان فراهم شده که درست در وسط جدول، تیتر نمایش داده شود ولی چون سلولهای راست و چپ دارای فرمول هستند، تیتر بصورت کامل نمایش داده نمی شود.
    آیا روشی هست که بتوان در سلول وسط جدول در سطر اول، علیرغم پر بودن سلولهای مجاور، عبارت تیتر را بصورت کامل نمایش داد؟ (امکان افزایش عرض ستون در سطر اول، به دلیل به هم خوردن عرض ستونهای جدول، نیست)
    و یا آیا روشی هست که بتوان در یک سلول از سطری دیگر به اکسل گفت که برو به یک سلول مشخص (از سطر اول) و جمله تیتر را در آن بنویس؟ (در این حالت کلیه سلولهای سطر اول خالی و بدون فرمول هستند و مشکل نمایش ناقص پیش نمی آید)
    با تشکر و سپاس فراوان

    • آواتار
      حسنا خاکزاد ۱۰ فروردین ۱۳۹۸ / ۸:۰۳ ب٫ظ

      درود بر شما
      مشکلِ مسئله خیلی واضح نیست. ولی در مورد سوال آخر، بله شما میتونید براحتی در یک سلول، آدرس سلول دیگه رو بدید که تیتر در اون هست.
      بصورت کلی سوالتون گنگه.

  • سعید ۳۰ بهمن ۱۳۹۷ / ۶:۲۰ ب٫ظ

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

    • آواتار
      حسنا خاکزاد ۱ اسفند ۱۳۹۷ / ۱:۴۰ ب٫ظ

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

  • ماریا ۱۱ دی ۱۳۹۷ / ۸:۳۸ ب٫ظ

    با سلام و احترام

    من یک شیت دارم با جدولی که دارای ستون های A-B-C-D-E (و ردیف های ۱ تا ۱۰۰۰) می باشد و من نیاز دارم در شیت دیگری در صورتیکه A100-B100-C100-D100 باشد به من نشان بدهد که E100 چند است.
    چه فرمولی پیشنهاد می دهید؟

    • آواتار
      حسنا خاکزاد ۱۲ دی ۱۳۹۷ / ۹:۱۲ ق٫ظ

      درود بر شما
      شرط رو ناقص نوشتید. در صورتیکه A100-B100-C100-D100 چی باشه؟
      و اگر نبود چی؟

      فرضیا ت رو کامل بنویسید
      در نهایت باید از توابع منطقی IF استفاده کنید

      https://excelpedia.net/if-function/

  • ژوان اقبال ۱۰ دی ۱۳۹۷ / ۱۰:۳۳ ب٫ظ

    با سلام ، ممنون از تمامی زحمات شما . واقعا عالی توضیح داده شده . سوال که برای من پیش اومده اینکه ایا میشه با تابع choose تعداد فصول سال رو در بین دو تاریخ مشخص کرد ؟ به عنوان مثال اگر بخواییم تعداد فصول سال بین تاریخ پانزدهم فروردین سال ۹۶ تا پانزدهم دی ماه سال ۹۷ محاسبه کنیم میشه از تابع فوق استفاده کنیم ؟

    • آواتار
      حسنا خاکزاد ۱۱ دی ۱۳۹۷ / ۹:۳۷ ق٫ظ

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

      سوالتون بسته به اینکه تاریخ شمسی هست یا میلادی، جواب های متفاوتی داره.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *