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

شکل ۱- جدول رده بندی
۱-۱- حل با استفاده از تابع VLOOKUP
این روش در مقاله جستجوی بازه ای تشریح شده است.
۱-۲- حل با استفاده از Nested If یا If تو در تو
در این روش با استفاده از تابع IF مسئله حل میشه:
=IF(E2>۱۵۰;”عالی”;IF(E2>۱۰۰;”خوب”;IF(E2>۵۰;”متوسط”;”ضعیف”)))

شکل ۲- ترکیب های تابع Choose – جستجوی بازه ای با استفاده از Nested If
۱-۳- حل با استفاده از ترکیب Choose و توابع منطقی
یکی از ترکیب های تابع Choose جستجوی بازه ای است. برای اینکه این مسئله رو با استفاده از تابع Choose و عملگرهای منطقی حل کنید از فرمول زیر استفاده کنید:
=CHOOSE ( (E2>150) + (E2>100) + (E2>50) + (E2>0); “” ; ” خوب ” ; ” متوسط ” ; ” ضعیف عالی ” )

شکل ۳- جستجوی بازه ای با استفاده از 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 میشه برای تولید داده تصادفی استفاده کرد. مثلا فرض کنید داده های طیف لیکرت (عالی، خوب، متوسط، بد، خیلی بد) رو بصورت رندوم تولید کنید. برای این کار از ترکیب این تابع با 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)

شکل ۶- ترکیب های تابع Choose – جستجوی عقبگرد Backward Vlookup
5- استخراج نام ماه یا روز هفته با توجه به تاریخ
فرض کنید میخواهیم نام ماه یا روز هفته رو با توجه به تاریخ روز استخراج کنیم. همونطور که قبلا در مقاله مربوط به تاریخ در اکسل توضیح داده شد، تابع Today تاریخ روز سیستم و تابع Month ماه یک رشته تاریخ رو به عدد بر میگردونه. یعنی اگر ماه آوریل باشه، تابع Month عدد ۴ رو به ما نشون میده. پس برای این که بتونیم نام ماه مورد نظر رو استخراج کنیم، کافیه فرمول زیر رو بنویسیم:
=CHOOSE ( MONTH ( TODAY () ) ; “Jan” ; “Feb” ; “Mar” ; “Apr” ; “May” ; “Jun” ; “Jul” ; “Aug” ; “Nov” ; “Sep” ; “Dec”)
این تابع اول تاریخ روز سیستم رو نمایش میده، بعد شماره ماه مربوطه رو تعیین میکنه و بعد با توجه به عدد استخراج شده، ماه مورد نظر نمایش داده میشه.
دقت داشته باشید که ترتیب آرگومان ها در تابع Choose خیلی مهمه. مثلا در اینجا ترتیب ماه های میلادی از اولین ماهه تا دوازدهمین ماه رعایت شده است.
سوال: همین مثال بالا رو میتونید در خصوص روزهای هفته هم حل کنید. راه حل پیشنهادیتون رو در ادامه و در قالب کامنت ثبت کنید.
دانلود فایل این آموزش
برای دانلود مثال های تابع Choose در اکسل روی دکمه زیر کلیک کنید





سلام و خسته نباشید
بنده در شیت اول، سه سلول با عنوان نام، نام خانوادگی و نام پدر دارم و یک جدول با دو فیلد تاریخ و مبلغ دریافتی، در شیت دوم هم جدولی با فیلدهای نام، نام خانوادگی، نام پدر، تاریخ، مبلغ دریافتی دارم که پر از مشخصات نفرات مختلف و مبالغی هست که دریافت کردند، الان می خوام وقتی در شیت اول نام، نام خانوادگی و نام پدر شخصی رو وارد کنم، در جدول کلیه تاریخ و مبالغ دریافتی شخص به تفکیت (نمی خوام مثل Sumifs مجموع فقط بیاد)، قرار بگیرند.
با تشکر
درود
از تابع vlookup استفاده کنید
سلام خسته نباشی
میشه با استفاده از vlook up که تو شیت دیگه نوشتیم…یه داده رو از یه جدول تو یه شیت دیگه استخراج کنیم البته به صورت عقبگرد یا با تابع دیگه ای میشه این کارو کرد؟
درود
بله فرقی نمیکنه. از یک فایل دیگه هم میتونید
میتونید این مقاله رو مطالعه کنید
https://excelpedia.net/excel-external-link/
اگر منظورتون از عقبگرد، backward vlookup هست این مقاله رو بخونید
https://excelpedia.net/choose-funcion/
آموزش ها بسیار عالی هستن، امیدوارم به صورت مستمر با مباحث جدید باعث پیشرفت دانش علاقه مندان به اکسل باشید.
ممنون
با عرض سلام وخسته نباشید فرض کنید بین سلولهای b1تا b10 هر بار قراره یک عدد وارد بشه وهمیشه از بین این اعداد مقدار آخرین عدد فقط درسلول a1درج بشه روش کار چطوره؟
درود بر شما
میتونید با ترکیب توابع counta و index ، آخرین سلول پر شده رو پیدا کنید
روزهای هفته به ترتیب در بازه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 اصلا این نیست. عدد رو میدید، مطابق با اون خروجی میگیرید. محاسباتی رو انجام نمیده.
سوالتون بسته به اینکه تاریخ شمسی هست یا میلادی، جواب های متفاوتی داره.