
ترکیب های تابع Choose در اکسل
همونطور که قبلا گفته شد، فرمول نویسی حرفه ای اصولی داره که حتما باید به اونها مسلط باشیم. بعد از تسلط به اصول فرمول نویسی، باید به کارکرد هر تابع و ورودی ها و خروجی های آن مسلط باشیم تا بتونیم به ترکیب توابع مختلف بپردازیم و مسائل مختلف رو از این طریق حل کنیم. یکی از توابعی که در ظاهر خیلی کاربرد نداره، ولی در ترکیب با سایر توابع میتونه کاربردهای فوق العاده مفیدی داشته باشه تابع Choose هست. در آموزش معرفی تابع Choose به تشریح آرگومان ها و ورودی و خروجی این تابع پرداختیم. در این آموزش چندین مثال کاربردی از ترکیب های تابع Choose مفید ارائه میکنیم:
۱- جستجوی بازه ای با استفاده از تابع Choose
یکی از سوالاتی که خیلی زیاد پرسیده میشه این هست که یک جدولی داریم بصورت شکل ۱، میخواهیم برای یک سری افراد که امتیازهای مختلفی کسب کرده اند، رتبه بندی مرتبط با هر امتیاز از جدول شکل ۱ نمایش داده بشه. مثلا برای امتیاز ۶۵ کلمه متوسط نمایش داده بشه. این کار ۳ تا راه حل پیشنهاد میدیم:
شکل ۱- جدول رده بندی
۱-۱- حل با استفاده از تابع VLOOKUP
این روش در مقاله جستجوی بازه ای تشریح شده است.
۱-۲- حل با استفاده از Nested If یا If تو در تو
در این روش با استفاده از تابع IF مسئله حل میشه:
=IF(E2>150;”عالی”;IF(E2>100;”خوب”;IF(E2>50;”متوسط”;”ضعیف”)))
شکل ۲- ترکیب های تابع 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 ( ۰ + ۱ + ۱ + ۱ ; “” ; ” خوب ” ; ” متوسط ” ; ” ضعیف عالی ” )
پس فرمول نهایتا بصورت زیر درمیاد:
=CHOOSE ( ۳ ; “” ; ” خوب ” ; ” متوسط ” ; ” ضعیف عالی “ )
و با توجه به مقدار ۳ در آرگومان اول، فرمول، سومین مقدار از چهار مقدار، یعنی “خوب” رو بر میگردونه.
۲- جستجوی بازه ای برای اعمال محاسبات متنوع
فرض کنید یک جدول فروش داریم. به ازای مبالغ مختلف فروش، درصدهای مختلفی از مالیات بر روی میزان فروش اعمال میشه. برای محاسبه میزان مالیات با توجه به مبلغ فروش، مشابه مثال قبل عمل میکنیم:
=CHOOSE( (E2>100) + (E2>50) + (E2>0) ; ۵%*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 ( {۱,۲} ; D2:D4 ; B2:B4 )
حالا این فرمول رو به عنوان آرگومان سوم یعنی Table_Array در تابع Vlookup قرار میدیم.
=VLOOKUP ( B6 ; CHOOSE ({1,2} ; D2:D4 ; B2:B4 ) ; ۲ ; ۰)
شکل ۶- ترکیب های تابع Choose – جستجوی عقبگرد Backward Vlookup
۵- استخراج نام ماه یا روز هفته با توجه به تاریخ
فرض کنید میخواهیم نام ماه یا روز هفته رو با توجه به تاریخ روز استخراج کنیم. همونطور که قبلا در مقاله مربوط به تاریخ در اکسل توضیح داده شد، تابع Today تاریخ روز سیستم و تابع Month ماه یک رشته تاریخ رو به عدد بر میگردونه. یعنی اگر ماه آوریل باشه، تابع Month عدد ۴ رو به ما نشون میده. پس برای این که بتونیم نام ماه مورد نظر رو استخراج کنیم، کافیه فرمول زیر رو بنویسیم:
=CHOOSE ( MONTH ( TODAY () ) ; “Jan” ; “Feb” ; “Mar” ; “Apr” ; “May” ; “Jun” ; “Jul” ; “Aug” ; “Nov” ; “Sep” ; “Dec”)
این تابع اول تاریخ روز سیستم رو نمایش میده، بعد شماره ماه مربوطه رو تعیین میکنه و بعد با توجه به عدد استخراج شده، ماه مورد نظر نمایش داده میشه.
دقت داشته باشید که ترتیب آرگومان ها در تابع Choose خیلی مهمه. مثلا در اینجا ترتیب ماه های میلادی از اولین ماهه تا دوازدهمین ماه رعایت شده است.
سوال: همین مثال بالا رو میتونید در خصوص روزهای هفته هم حل کنید. راه حل پیشنهادیتون رو در ادامه و در قالب کامنت ثبت کنید.
دانلود فایل این آموزش
برای دانلود مثال های تابع Choose در اکسل روی دکمه زیر کلیک کنید
سلام
وقتتون بخیر
من یکسری داده دارم که باید قرعه کشی بینشون انجام بشه، فرمت دادههام به شکل زیر هستش:
مثلا: مریم ۳ سهم، زهرا ۲ سهم، مهدی ۱ سهم
حالا باید بین تعداد سهمهاشون قرعهکشی کنم و برای مثلا ۶ ماه ترتیبی بدست بیارم و سهمی که دارن رو بهشون بدم، برای این حالت چه فرمول و بخشی از اکسل رو میتونم استفاده کنم؟
درود
یا باید هر اسم رو به تعداد تکرار، تکرار کنید
یا اینکه کدهایی تولید کنید و به هرنفر متناسب با تعداد سهم، چندتا کد تخصیص بدید
بعد هم با تابع rand عدد تصادفی تولید کنید
سلام و خسته نباشید
بنده در شیت اول، سه سلول با عنوان نام، نام خانوادگی و نام پدر دارم و یک جدول با دو فیلد تاریخ و مبلغ دریافتی، در شیت دوم هم جدولی با فیلدهای نام، نام خانوادگی، نام پدر، تاریخ، مبلغ دریافتی دارم که پر از مشخصات نفرات مختلف و مبالغی هست که دریافت کردند، الان می خوام وقتی در شیت اول نام، نام خانوادگی و نام پدر شخصی رو وارد کنم، در جدول کلیه تاریخ و مبالغ دریافتی شخص به تفکیت (نمی خوام مثل 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 اصلا این نیست. عدد رو میدید، مطابق با اون خروجی میگیرید. محاسباتی رو انجام نمیده.
سوالتون بسته به اینکه تاریخ شمسی هست یا میلادی، جواب های متفاوتی داره.
درود بر شما
من داده هایی دارم که خیلی زیاد هستند و میخواهم فرمولی بدهم که روی هر ۲۴ ردیف اعداد اعمال شود و بعد روی ۲۴ ردیف بعدی .
آیا تابعی وجود دارد که خودش جلو برود . چون وقتی از آدرس دهی مطلق یا نسبی استفاده می کنم باید خودم عدد ردیف را بدهم (تعداد داده ها خیلی زیاد است.
ممنون می شم اگر راهنمایی کنید
سلام، معمولا در اینجور موارد از تابع Offset استفاده میکنیم. اما باید مشخص کنید که دقیقا میخواید چه کنید.
سلام
در مورد ترکیب تابع choose و vlookup سوالی برام پیش اومد که برای عقبگرد کردن جستجو اون {۱ و ۲} را باید با چه منطقی نوشت؟
منظورم اینه که نمیفهمم برای پروژه ای که دارم با این توضیحات چجوری بنویسم:
من یه شیت دارم حدود ده تا ستون ستون هشتم یه کده که وصله شده به یه نام توی ستون هفتم، حالا من می خوام توی یه شیت دیگه یه ستون ایجاد کنم بنام کد روبروش بیاد نام (اینجا یه عقبگرد می خواد) و اصل ماجرا اینکه اطلاعات شش تا ستون قبل وقتی کد رو می زنم بیاد و کد رو عوض کنم مال یکی دیگه بیاد؟ البته ترتیب این اینجا مثل همون شیت مبدأ هستش
مرسی جناب چراغی، ممنون خانم خاکزاد
درود بر شما
شما با {۱,۲} جدول مورد نظرتون و میسازید که دو ستون داره (قراره جستجو در این تیبل دو ستونه انجام بشه).
ستون اول مثلا اون ستون هشتم هست و ستون دومش، ستون هفتم از جدول داده هاتون هست.
سلام یه سوال دارم
فرض میکنیم یه جدول داریم که اطلاعات مربوط ب چند نفربه صورت پراکنده در اون نوشته شده
من میخام یه لیست کشویی ایجاد کنم که مثلا وقتی نام مصطفی رو انتخاب میکنم اطلاعات مربوط به مصطفی فیلتر بشه
درود بر شما
اگر میخواید با انتخاب یک داده فیلتر بشه، باید کد بنویسید
اما اگر میخواید اطلاعات مربوطه فراخوانی بشن در جای دیگه، از تابع vlookup استفاده کنید
سلام با عرض خسته نباشید
چجوری میتونم به طور تصادفی به ۵۰ نفر یکی از دو حرف Z یا P رو اختصاص بدم؟با استفاده از توابع IF و RANDBETWEEN و فقط در یک ستون
درود بر شما
از این فرمول استفاده کنید:
با سلام. من قسمت ۱-۳ رو دقیقا تایپ میکنم اما ارور میده. تمرین خوب متوسط عالی ?
درود بر شما
چک کنید متن ها حتما داخل دبل کوتیشن باشه ” ”
همچنین جداکننده فرمول رو هم چک کنید , یا ;
سلام روز بخیر، میدونم که سوالم ربطی به این تابع نداره ولی نمی دونستم چه جور میتونم با شما در ارتباط باشم، میشه لطفا راهنماییم کنیم که چه جور میشه یک فایل با فرمت pdf را به فایل اکسل لینک کنیم (یعنی با کلیک روی یک سلول خاص لینک بشه به فایل pdf که توضیحات مربوط به اون سلول را داره)
سلام، در نرم افزار Adobe Acrobat، از قسمت File>Export میتونید فایل PDF رو به فرمت های مختلف تبدیل کرد. اما نکته ای که در مورد فایل های فارسی هست اینه که معمولا این فایل ها به درستی به فرمت های قابل ویرایش تبدیل نمیشن و این روش بیشتر برای فایل های انگلیسی هست.
با سلام و خسته نباشید ممنونم که همیشه پاسخگوی سوالات مکرر ما بوده اید و من به شخصه آرزوی سلامتی را برایتان دارم سوال من : برای این کار از چه تابعی میتونم استفاده کنم؟ —– میخواهم یک قطعه به تفکیک تامین کننده در شیت ۲ و به تفکیک ok و not ok در شیت ۲ در بازه زمانی مشخص پیدا کنه ومطلوبیت آن کالا رو که با کد ۱ مشخص کردم در شیت ۱ بصورت ok با کد ۲ not ok شرط های متناظر باهم(کد قطعه -تامین کننده- بازه زمانی)
درود بر شما
سوالتون خیلی بستگی به ساختار فایل داره و اینکه تاریخ شمسی هست یا میلادی
در کل باید بعد از فراخوانی داده ها با استفاده از توابع جستجو، با If به خواستتون برسید
با سلام ببخشین میشه با ذکر مثال بیشتر راهنمایی ام کنین متوجه نمیشم
درود بر شما
سوالتون رو در گروه تلگرامی مطرح کنید. نمونه فایل بذارید تا بررسی بشه. عرض کردم بستگی به ساختار فایل و جنس تاریخ داره
لینک گروه در فوتر سایت موجود هست
با سلام و عرض ادب
سرکار خانم خاکزاد فایل پیوست باز نمیشه
لطفا بررسی بفرمائید.
متشکرم
درود بر شما
بررسی شد، مشکلی نداره.
دوباره دانلود بفرمایید. احتمالا ناقص دانلود شده
بی نهایت سپاسگزارم.
خیلی این مطلب برام مفید بود.
درود بر شما
دقیقا درسته
فقط ترتیب روزها در تاریخ میلادی باید رعایت بشه به اینصورت که اولین روز هفته یکشنبه باشه