لیست قابل جستجو در اکسل
ایجاد لیست فرو ریز قابل جستجو در اکسل
تا حالا نحوه ایجاد لیست در اکسل و نحوه ایجاد لیست های به هم وابسته در اکسل رو یاد گرفتیم. حالا میخوایم لیستی تهیه کنیم که قابل جستجو باشه. در واقع تعداد زیادی داده در لیست فروریز داریم که میخوایم قسمتی از عبارت مورد نظر رو که تایپ کردیم، لیست مورد نظر، کوتاه بشه و فقط آیتم هایی رو نشون بده که شامل اون عبارت هستن، در واقع قصد داریم لیست فروریز قابل جست و جو در اکسل ایجاد کنیم.
فرض کنید لیستی داریم از اسامی استان های ایران و میخواهیم با تایپ قسمتی از نام یک استان، لیست محدودتری برای انتخاب داشته باشیم.
منطق کلی کار این هست که باید لیستی از سلول هایی که شامل عبارت مورد نظر ما هستن رو ایجاد کنیم و به عنوان ورودی لیست دیتاولیدیشن قرار بدیم. برای انجام این کار، طبق مراحل زیر پیش میریم:
گام اول: پیدا کردن عبارت مورد نظر
تابعی که میتونه جستجو کنه ببینه یک عبارت در یک سلول وجود داره یا نه تابع Find/Search هست. این دو تابع در مورد سرچ فارسی عینا مشابه عمل میکنن. در صورت پیدا کردن عبارت مورد نظر، خروجی عدد و در غیر اینصورت خطای #Value! خواهد بود.
پس با فرض اینکه لیست مورد نظر قراره در سلول D1 ایجاد بشه، فرمول زیر رو مینویسیم. (شکل 1)
=FIND ($D$1 , A2)
شکل 1- پیدا کردن عبارت مورد نظر در سلول های لیست
همونطور که میبینیم، در صورتی که عبارت مورد نظر پیدا بشه، خروجی عدد خواهد بود و در غیر اینصورت خطا.
گام دوم: شماره گذاری موارد پیدا شده
حالا برای اینکه خروجی جستجو رو به گونه ای تغییر بدیم که بتونیم سلول های پیدا شده رو پشت سر هم لیست کنیم، از تابع زیر استفاده میکنیم و سلول های پیدا شده رو شماره ردیف میزنیم.(برای درک بهتر این موضوع مقاله مربوط به شماره ردیف خودکار رو مطالعه کنید)
=IF ( ISNUMBER ( FIND ($D$1,A2) ) ,MAX ($B$1:B1) +1 ,”” )
در واقع تابع Isnumber چک میکنه که آیا خروجی تابع Find عدد هست یا نه. اگه عدد بود، ماکزیمم محدوده بالای سرشو باضافه 1 میکنه، اگر هم عدد نبود (خطا بود) خالی میذاره. همونطور که در شکل 2 میبینیم، مقابل دو استان که شامل عبارت “رد” هستن، یعنی اردبیل و کردستان، به ترتیب شماره 1 و 2 نمایش داده می شه.
شکل 2- ایجاد شماره پشت سر هم برای سلول هایی که شامل عبارت مورد نظر هستند
گام سوم: لیست کردن موارد پیدا شده
حالا کافیه که سلول های مشخص شده رو پشت سر هم لیست کنیم. برای این کار میتونیم از Backward Vlookup استفاده کنیم. یا اینکه از ترکیب Match و Index استفاده کنیم:
=IFERROR ( INDEX ($A$2:$A$32, MATCH ( ROW(A1) , $B$2:$B$32, 0)) , “”)
شکل 3- فراخوانی استان هایی که شامل عبارت مورد جستجو هستن
این فرمول شماره های ایجاد شده (که به ترتیب هستن) رو فراخوانی میکنه و محتوای موجود در سلول روبروی اونها رو نمایش میده. که در واقع خواسته ما هم همینه و میخوایم لیست استانهایی که شامل عبارت مورد جستججو هستن رو پشت سر هم داشته باشیم.
گام چهارم: نام گذاری پویا برای محدوده لیست
مرحله بعد ایجاد یک محوده نامگذاری پویا هست که بتونیم به دیتاولیدیشن اختصاص بدیم.
از تب Formula گزینه Name Manager رو کلیک میکنیم و یک نام به عنوان List ایجاد میکنیم و فرمول زیر رو در اون مینویسیم. مطابق شکل 4.
=OFFSET ( Sheet2!$C$2,0,0, COUNTIF ( Sheet2!$C$2:$C$32 , “?*” ) ,1)
برای درک بهتر محدوده های نامگذاری داینامیک، مقاله مربوط به Offset رو مطالعه کنید.
تابع COUNTIF( Sheet2!$C$2:$C$32 , “?*” ) تعداد سلول های پر که داده نمایش میدن رو شمارش میکنه و کاری به سلول هایی که با فرمول پر شدن ولی خالی نمایش داده میشن نداره.
شکل 4- لیست فروریز قابل جست و جو – نامگذاری محدوده بصورت داینامیک
گام پنجم: ایجاد لیست کشویی
کافیه که نام ایجاد شده رو به Data Validation اختصاص بدیم. برای این کار روی سلول D1 کلیک کرده و از تب Data گزینه Data Validation رو انتخاب میکنیم. از تب Settings گزینه List رو انتخاب میکنیم و نام تعیین شده که در گام چهارم فرمول نویسی کردیم رو تخصیص میدیم. مطابق شکل 5
شکل 5- تخصیص محدوده نامگذاری شده به دیتا ولیدیشن
قبل از اینکه Ok رو بزنیم، به تب Error Alert رفته و تیک گزینه اخطار رو برمیداریم و بعد Ok رو میزنیم. مطابق شکل 6
شکل 6- لیست فروریز قابل جست و جو – برداشتن تیک خطا دهی
حالا کافیه عبارت مورد نظر رو در سلول D1 تایپ کنیم و بعد لیست فروریز رو باز کنیم. می بینیم که فقط سلول هایی که شامل اون عبارت هستن در لیست نمایش داده میشه. به تصویر زیر دقت کنید:
با این 6 گام و با استفاده سلول های کمکی و بدون نیاز به کد VBA تونستیم یک لیست فروریز قابل جستجو تهیه کنیم که میتونه در ورود داده خیلی به ما کمک کنه. حالا میتونیم داده های مرجع رو در یک شیت قرار بدیم و لیست رو در شیت های دیگه که سلول های کمکی استفاده شده هم دیده نشه.
دانلود فایل اکسل لیست قابل جستجو در اکسل
برای دانلود فایل لیست کشویی در اکسل روی دکمه زیر کلیک کنید:
برچسب:تابع Find, تابع IF, تابع Iferror, تابع Index, تابع Match, تابع Offset
26 نظر
سلام
من یک فایل اکسل تردد و حقوق و دستمزد طراحی کردم که فقط ورود و خروج پرسنل رو میزنم و گزارش کارکرد روزانه و ماهانه و حقوق و دستمزد (با توجه به حکمش) و بیمه و مالیات وغیره رو خودش خودکار محاسبه میکنه
دستگاه تردد هم گرفتیم برا شرکت ولی برنامه نداره
میخواستم بدونم ممکن هست که این برنامه تحت اکسلی که من نوشتم اطلاعات ورود و خروج رو به صورت اتومات از دستگاه تردد بگیره و ثبت کنه؟
درود
باید ببینید دستگاهتون خروجی اکسل میده؟
سلام
وقت بخیر
بسیار عالی و کاربردی بود ممنونم
سلام خسته نباشید
نیاز فوری به کمک دارم ازتون خواهش میکنم کمک کنید
لیستی شامل عنوان به صورت سطری و تاریخ به صورت ستونی و اعداد صفر و یک جلوی عناوین که نشان دهنده انجام شده یا نشده میباشد دارم میخوام یه جدول بسازم که وقتی تاریخ رو زدم عنوان ها و عدد مربوط به انجام شده رو نشون بدهد
خیلی طف میکنید کمکم کنید اگه بخواهید هزینش رو هم میدم
درود بر شما
بستگی به ساختار فایل و نوع داده ها داره
و میتونید با همین توابع جستجو ایتکار و انجام بدید
جستجوی موارد تکراری رو داخل سایت سرچ کنید ازش ایده بگیرید
پیوت تیبل هم میتونه کمک کنه بهتون
سلام
اموزش بسیار خوبی بود. حتی برای من که ابتداییات اکسل رو هم نمیدونستم عالی بود
این کدها رو توی برنامه خودم پیاده کردم و جواب داد. اما یک سوال:
اگر به همین جدول یکی دو تا ستون دیگه رو هم اضافه کنیم و بخواهیم داده های اونها رو هم در نتیجه جستجومون بیاره چیکار کنیم؟
در حقیقت این برنامه فقط وجود مورد جستجو رو اطلاع میده . در حالیکه نیازه ما بعد از جستجو , اطلاعات دیگه رو هم نشون بده
مثلا وقتی نشون داد البرز، اطلاعات ستونهای دیگه مثل کد اون استان رو هم نشون بده
لطفا راهنمایی بفرمایید
درود بر شما
برای جستجوی موارد مرتبط باید از تابع Vlookup استفاده کنید
ممنون از زحمات شما ، فایل دانلود شده کار نمیکنه!
درود
فایل مشکلی نداره
یا کامل دانلود نشده
یا اینکه نرم افزار زیپ اخرین نسخه نیست
با تشکر
اگر این لیست کشویی در یک تیبل قرار داشته باشد این روش پاسخگو نیست
لطفا راهنمایی کنید
درود
اگر منظورتون تکرار ولیدیشن در سلول های مختلف هست، باید با یک روش، محتوای سلولی که داره پر میشه رو ببرید روی سلولی که قسمتی از نام رو می نویسید
با تشکر از دقت نظرتان
دقیقا همینطور هست . یه جدول مرجع از 800 نماد در بورس هست . و در جدول دیگر من نمادهای انتخابی خودم رو وارد میکنم بطوریکه سلول نماد بصورت لیست کشویی هست که با توجه به تعداد زیاد فرصت زیادی گرفته میشود و زیاد خوب نیست . به همین منظور اگر این لیست قابلیت سرچ داشته باشه ورود اطلاعات با سهولت انجام میپذیرد.
و می خواهم در همون سلول سرچ کنم نه اینکه سرچ را یه جای دیگه انجام داد ( فکر کنم اینکار رو در vba انجام داده شود بهتر باشد)
با تشکر از شما لطفا راهنمایی بفرمایید.
درصورت امکان قابیلت ارسال فایل رو هم دارم
خواهش مکینم. عرض کردم راه حل رو… میتونید از تابع cell برای پیدا کردن سلول فعال استفاده کنید و این اموزش رو تکمیل کنید برای خودتون
حالا یا فرمول، یا کدنویسی، هر کدوم مسلط تر هستید انتخاب کنید.
از راهنمایی تون بسیار سپاسگزارم
میخوام تولیستی که با دیتا ولیدیشن ایجاد چون خیلی زیاد است قابلیت جستجو بگذارم مانند فیلتر کردن که در خود اکسل انجام می دهیم که یک یا دو تا حرف را می زنیم و اینطوری جستجو سریعتر می شود تا این که بخواهیم خود لیست را کامل بگردیم
درود بر شما
دقیقا زیر مقاله آموزشی که جواب شماست، سوال مطرح کردید.
مطالعه بفرمایید و از فایل نمونه استفاده کنید
سرکار خانم خاکزاد
با سلام و احترام
مطالبتون بسیار بسیار کاربردی و مفید می باشند، چند وقتی میشه که به دنبال این موضوع بودم خیلی خیلی سپاسگزارم خیلی به کارم اومد.
سلام وقت بخیر.
یک صفحه داریم که دو ستون دارد.ستون اول تاریخ روز و ستون دوم قیمت روز.
می خواهیم بیشترین مقدار قیمت هر ماه با تاریخ متعلق به آن روز در دو ستون دیگه نمایش داده بشه.ولی داده ها برای بیست سال می باشد و همچنین تعدادزیادی فایل.با استفاده از از فرمول =INDEX(…,MATCH(MAX(…..),…..,0)) ( روزهای پنجشنبه و جمعه و تعطیلات داده نداریم ) بیشترین قیمت هر ماه را بدست میارم که بسیار وقت گیر هست. این داده ها برای موارد زیادی هم هست که کار رو خیلی سخت تر میکنه.اگر امکان دارد راهنمایی بفرمایید.متشکرم.
درود بر شما
بستگی داره که تاریخ میلادی باشه یا شمسیو اگه شمسی هست با چه فرمتی…
بهتره سوال رو در مقیاس کوچک مطرح کنید و مثال بزنید که خواستتون واضح بشه
سلام، واقعا نوع نشر دانش شما قابل تحسین است، موید باشید.
از محتوای فایل های کمکی شما خیلی بهره مند شدم
سلام من تازه میخوام اکسل را یاد بگیرم
ی روشی میخوام زود یاد بگیرم و برام سخت نباشه
ممنون
درود بر شما
پیشنهاد میکنم از این مجموعه استفاده کنید.
خودم مدرس هستم و از صفر اموزش داده شده. علاوه بر اینکه پشتیبانی هم با خودم هست و میتونید سوالاتتون و بپرسید
https://excelpedia.net/product/start-excel/
الان هم جشنواره هست و تخفیف خورده محصولات
با تشکر از شما بابت پاسخگویی سریعتون
از تابع IF استفاده کردم و همچنین ترکیبش با توابع SUM , COUNTIF
مساله ای که دارم این هست که تابع خیلی طولانی میشه
به اینصورت که اگر به طور مثال عدد سلول 3 باشه، با تابع کانت ایف باید بررسی بشه که تعداد خونه های غیر صفر از از ابتدای ردیف 3 هست یا خیر که اگه نباشه باید یک سلول دیگه به رنج کانت ایف اضافه شه و باز بررسی صورت بگیره و همین طور تا آخر
و این خیلی طولانی هست و امکان اشتباه زیاده.
جزئیات سوال مشخص نیست
باید ساختار و خواسته دقیق مشخص باشه
چیزی که برداشت کردم بدون یاز به if و با offset شدنی هست
باز هم برای ارائه جزئیات بیشتر به گروه تلگرامی برید و اونجا توضیحات به همراه عکس یا فایل بذارید تا دوستان راهنمایی کنن
سلام
وقت شما بخیر
من میخوام در یک سلولی اعدادی بین 1 تا4 قرار بدم و بعد برحسب عددی که در این مقدار قرار داره به همون تعداد سلول های موجود دریک ردیف رو جمع کنه با این شرط که اگر خانه های ردیف صفر بود آنها را به حساب نیاورد
درود بر شما
از تابع Offset کمک بگیرید و برای صفر بودن مقادیر، تعدادشو با countif حساب کنید و به مقدار مورد نظر اضافه کنید
https://excelpedia.net/offset-function/