
ایجاد لیست قابل جستجو در اکسل
تا حالا نحوه ایجاد لیست در اکسل و نحوه ایجاد لیست های به هم وابسته در اکسل رو یاد گرفتیم. حالا میخوایم لیستی تهیه کنیم که قابل جستجو باشه. در واقع تعداد زیادی داده در لیست فروریز داریم که میخوایم قسمتی از عبارت مورد نظر رو که تایپ کردیم، لیست مورد نظر، کوتاه بشه و فقط آیتم هایی رو نشون بده که شامل اون عبارت هستن، در واقع قصد داریم لیست فروریز قابل جست و جو در اکسل ایجاد کنیم.
فرض کنید لیستی داریم از اسامی استان های ایران و میخواهیم با تایپ قسمتی از نام یک استان، لیست محدودتری برای انتخاب داشته باشیم.
منطق کلی کار این هست که باید لیستی از سلول هایی که شامل عبارت مورد نظر ما هستن رو ایجاد کنیم و به عنوان ورودی لیست دیتاولیدیشن قرار بدیم. برای انجام این کار، طبق مراحل زیر پیش میریم:
گام اول: پیدا کردن عبارت مورد نظر برای ایجاد لیست قابل جست و جو
تابعی که میتونه جستجو کنه ببینه یک عبارت در یک سلول وجود داره یا نه تابع Find/Search هست. این دو تابع در مورد سرچ فارسی عینا مشابه عمل میکنن. در صورت پیدا کردن عبارت مورد نظر، خروجی عدد و در غیر اینصورت خطای #Value! خواهد بود.
پس با فرض اینکه لیست مورد نظر قراره در سلول D1 ایجاد بشه، فرمول زیر رو مینویسیم. (شکل ۱)
=FIND ($D$1 , A2)
شکل ۱- پیدا کردن عبارت مورد نظر در سلول های لیست برای ایجاد لیست قابل جست و جو
همونطور که میبینیم، در صورتی که عبارت مورد نظر پیدا بشه، خروجی عدد خواهد بود و در غیر اینصورت خطا.
گام دوم: شماره گذاری موارد پیدا شده
حالا برای اینکه خروجی جستجو رو به گونه ای تغییر بدیم که بتونیم سلول های پیدا شده رو پشت سر هم لیست کنیم، از تابع زیر استفاده میکنیم و سلول های پیدا شده رو شماره ردیف میزنیم.(برای درک بهتر این موضوع مقاله مربوط به شماره ردیف خودکار رو مطالعه کنید)
=IF ( ISNUMBER ( FIND ($D$1,A2) ) ,MAX ($B$1:B1) +1 ,”” )
در واقع تابع Isnumber چک میکنه که آیا خروجی تابع Find عدد هست یا نه. اگه عدد بود، ماکزیمم محدوده بالای سرشو باضافه ۱ میکنه، اگر هم عدد نبود (خطا بود) خالی میذاره. همونطور که در شکل ۲ میبینیم، مقابل دو استان که شامل عبارت “رد” هستن، یعنی اردبیل و کردستان، به ترتیب شماره ۱ و ۲ نمایش داده می شه.
شکل ۲- ایجاد شماره پشت سر هم برای سلول هایی که شامل عبارت مورد نظر هستند
گام سوم: لیست کردن موارد پیدا شده
حالا کافیه که سلول های مشخص شده رو پشت سر هم لیست کنیم. برای این کار میتونیم از Backward Vlookup استفاده کنیم. یا اینکه از ترکیب Match و Index استفاده کنیم:
=IFERROR ( INDEX ($A$2:$A$32, MATCH ( ROW(A1) , $B$2:$B$32, 0)) , “”)
شکل ۳- فراخوانی استان هایی که شامل عبارت مورد جستجو هستن
این فرمول شماره های ایجاد شده (که به ترتیب هستن) رو فراخوانی میکنه و محتوای موجود در سلول روبروی اونها رو نمایش میده. که در واقع خواسته ما هم همینه و میخوایم لیست استانهایی که شامل عبارت مورد جستججو هستن رو پشت سر هم داشته باشیم.
گام چهارم: نام گذاری پویا برای محدوده لیست
مرحله بعد ایجاد یک محوده نامگذاری پویا هست که بتونیم به دیتاولیدیشن اختصاص بدیم.
از تب Formula گزینه Name Manager رو کلیک میکنیم و یک نام به عنوان List ایجاد میکنیم و فرمول زیر رو در اون مینویسیم. مطابق شکل ۴.
=OFFSET ( Sheet2!$C$2,0,0, COUNTIF ( Sheet2!$C$2:$C$32 , “?*” ) ,۱)
برای درک بهتر محدوده های نامگذاری داینامیک، مقاله مربوط به Offset رو مطالعه کنید.
تابع COUNTIF( Sheet2!$C$2:$C$32 , “?*” ) تعداد سلول های پر که داده نمایش میدن رو شمارش میکنه و کاری به سلول هایی که با فرمول پر شدن ولی خالی نمایش داده میشن نداره.
شکل ۴- لیست فروریز قابل جست و جو – نامگذاری محدوده بصورت داینامیک
گام پنجم: ایجاد لیست کشویی
کافیه که نام ایجاد شده رو به Data Validation اختصاص بدیم. برای این کار روی سلول D1 کلیک کرده و از تب Data گزینه Data Validation رو انتخاب میکنیم. از تب Settings گزینه List رو انتخاب میکنیم و نام تعیین شده که در گام چهارم فرمول نویسی کردیم رو تخصیص میدیم. مطابق شکل ۵
شکل ۵- تخصیص محدوده نامگذاری شده به دیتا ولیدیشن
قبل از اینکه Ok رو بزنیم، به تب Error Alert رفته و تیک گزینه اخطار رو برمیداریم و بعد Ok رو میزنیم. مطابق شکل ۶
شکل ۶- لیست فروریز قابل جست و جو – برداشتن تیک خطا دهی
حالا کافیه عبارت مورد نظر رو در سلول D1 تایپ کنیم و بعد لیست فروریز رو باز کنیم. می بینیم که فقط سلول هایی که شامل اون عبارت هستن در لیست نمایش داده میشه. به تصویر زیر دقت کنید:
با این ۶ گام و با استفاده سلول های کمکی و بدون نیاز به کد VBA تونستیم یک لیست فروریز قابل جستجو تهیه کنیم که میتونه در ورود داده خیلی به ما کمک کنه. حالا میتونیم داده های مرجع رو در یک شیت قرار بدیم و لیست رو در شیت های دیگه که سلول های کمکی استفاده شده هم دیده نشه.
دانلود فایل اکسل لیست قابل جست و جو
برای دانلود فایل لیست کشویی در اکسل روی دکمه زیر کلیک کنید:
سلام و وقت بخیر؛
سوالم تکراری هست، توی دیگاهها برای تعمیم جستجو گفتید از این دستور INDIRECT(CELL(“address”)) استفاده کنیم. ولی من نتونستم نتیجه بگیرم. امکانش هست در دستور زیر بجای سلول ۴$D$ ستون D:D را با دستوری که گفتید جاگذاری کنم
IF(ISNUMBER(SEARCH(Sheet!$D$4,B4)),MAX($A$2:A3)+1,0)
درود بر شما
خب این فمرول قراره چکار یانجام بده؟
اون فرمول که ارائه شده برای پیدا کردن آدرس سلول انتخاب شده در لحظه است
باسلام و احترام کاربرد apply name در define name رو میشه توضیح بدید
درود بر شما
وقتی شما فرمول نویسی رو انجم دادید
بعد نامگذاری کردید
سلول حاوی فرمول رو انتخاب میکنید و apply name رو میزنید
اگر در اون فمرول ،محدوده ای مطابق با نامگذار یهای تعیین شده وجود داشت
جایگزین میشه
سلام فایل رو بیزحمت ارسال کنید دانلود نمیشه
درود بر شما
لینک مجدد چک شد
مشکلی نداره
Spam رو چک کنید
احتمالا ایمیل های سازمانی هم مشکل دار باشه
به هر حال اینم لینک مستقیم برای دانلود خدمت شما
ممنونم عالی بود
شماراهی میدونید که بشه در تیبل سلول هارو مرج کرد
درود بر شما
نمیشه
جزو اصوله
باسلام برای اینکه در سلول های پایینی لیست کشویی هم بخوایم از لیست کلی سرچ کنه باید در قسمت ابتدای کار ینی تابع find هم از تایع indirect و cell استفاده کنیم ؟و ب چه نحو باید استفاده بشه چون من هرچی میزنم ارور میده
درود بر شما
کافیه هر جا D1 استفاده شده، بجاش بذارید indirect(Cell(“Address”))
فقط اولش یک حطای circular میگیرید که منطقش درسته چون روی خودشه
اما لیست ها درست کار میکنه…. پس اون خطا ر کاری نداشته باشید، بعد از اصلاح فرمول شروع کنید به استفاده از لیست
ضمنا یادتون ننره که ولیدیشن رو بانتقال بدید در محدوده دلخواه!
سلام وقت شما بخیر
میشه لطف کنین فرمول کامل رو از if برای وقتی که بخابیم برای چند سلول از این دیتاولیدیشن استفاده کنیم رو بنویسید ؛ indirect و cell رو که میزنم با خطا مواجه میشم
با سپاس
درود بر شما
if نمیخواد
کافیه هر جا D1 استفاده شده، بجاش بذارید indirect(Cell(“Address”))
فقط اولش یک حطای circular میگیرید که منطقش درسته چون روی خودشه
اما لیست ها درست کار میکنه
سلام
ممنون از راهنمایی تون ولی وقتی indirect(Cell(“Address”)) رو استفاده میکنم در فرمول و یک بازه رو انتخاب میکنم باز هم تنها یک سلول (d1) رو بهم پاسخ میده
وقتی سلول بعد رو میزنم باز هم پیشنهاد های سلول d1 رو بهم میده
درود
دقت کنید این تابع روی سلول فعال کار میکنه، یعنی لازمه حتما توی سلول جدید یک حرکتی انجام بشه تا به عنوان سل فعال شناخته بشه
با سلام
من یک لیست قیمت دارم که دادهای تکراری هم در آن هست می خواهم از بین آنها هر کدام از دادها را به انتخاب کمترین قیمت را به من بدهد؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
درود بر شما
اگر ۲۰۱۹ دارید تابع minifs اگر ندارید DMin اینکار رو میتونه انجام بده
سلام
چندتا محصول دارم که اطلاعات هر محصول در شیت مربوط به خودش هست.
یک شیت هم بعنوان صفحه آغازین دارم که قراره محصولم را از اونجا انتخاب کنم و و با انتخابش، به شیت مربوط به اون محصول برم.
میشه به داده های لیست کشویی لینک داد؟
سوال دومم اینه که میتونم توی اکسل و با لیست کشویی ، نمودار سه ماهه و شش ماهه و… را تعیین کنم و بهم نمودار را نمایش بده؟
ممنون میشم راهنمایی کنید.
مورد اول با hyperlink شدنی هست
https://excelpedia.net/hyperlink-function/
بعدی هم با پیوت تیبل و pivotchart و اسلایسر میشه
یا اینکه نمودارهای پویا
https://excelpedia.net/dynamic-chart/
سلام تشکر وبابت آموزش های عالی
فقط یه سوال آیا میشه طوری لیست رو فرمول نویسی کرد که دیگه نیاز به باز کردن لیست نباشه یعنی با نوشتن قسمتی از متن لیست بصورت پیش فرض نمایش داده بشه
ممنون
درود بر شما
در دیتاولیدیشن و فعلا تا الان این امکان وجود نداره
با سلام
اگر علاوه بر سلول d1 در سولهای d2 تا d10 هم بخواهیم همینطور دیتا ولیدیشن قابل جستجو بگذاریم چکار باید بکنیم؟
درود بر شما
باید از ترکیب تابع cell و indirect استفاده کنید
در کامنت های همین پست نمونه گذاشته شده
سلام خسته نباشید من میخوام برای فاکتور فروش اینو انجام بدم ولی این برای یک سلول هست میخوام برای هر ردیف فاکتور باشه چیکار باید بکنم دقیق میشه توضیح بدید چون یه جوابی داده بودید نفهمیدم((درود بر شما
خواهش میکنم
شرط فرمول رو بجای اینکه بگید مستقیم از سلول خاصی (که دیتاولیدیشن داره) بخونه از این بخونه:
INDIRECT(CELL(“address”))
این تابع ادرس سلول انتخاب شده هست))
اینو کامل بگید
درود بر شما
کامله دیگه!
کامل نوشتم فرمول رو…
اون قسمت فرمول که شرط هست یعنی سلول D1 رو بردارید این فمرول رو بجاش بذارید
اگر با تابع cell هم اشنا نیستید این مقاله رو بخونید
https://excelpedia.net/cell-function/
ضمن عرض سلام و وقت بخیر، من یک فایل مرجع دارم از اسم و نام مدرسه دانش آموزان. با توجه به اینکه دانش آموزان میرن امتحان میدن و من اسماشونو حفظ نیستم، می خواستم بدونم راهکاری هست توی اکسل که نام دانش آموزان و نمرشوشون رو وارد کنم و بتونه براساس اون فایل مرجع جستجو کنه و براساس اسم هنرستانشون این دانش آموزان و نمره ها رو برام مرتب کنه. ممنون.
درود
بله جستجو با روش های مختلف ممکنه
بستگی به شرایط و دانش کاربر، روش جستجو رو باید مشخص کنید
سلام خانم مهندس خاکزاد، یه لیست کشویی با دیتاولیدیشن ایجاد کردم از طریق ایجاد تیبل که تیبل ها ۵ تا است در یک شیت یعنی ۵ تا ستون کنار هم که هر کدوم تعدادی زیر مجموعه دارند، بعد با دیتا ولی یشم و ایندایرکت توشیت دیگه لیست کشویی رو فراخوان میکنم،اول هر کدوم از سر ستونهاو خونه بعدش زیر مجموعه همون ستون، حالا چه جوری با تایپ قسمتی از هر کدام از لیستها زودتر به نتیجه برسم،یعنی ایندایرکت قابل جستجو شه با این تعداد ستون با تشکر
درود بر شما
باید هر دو منطق “لیست وابسته” و “لیست قابل جستجو ” رو ترکیب کنید
یعنی کاری کنید که لیست هایی که با تیبل درست کردید، داینامیک و بر اساس محتوای سلول تغییر کنن
درود و خسته نباشید
آموزش خیلی خوبی بود.
سوالی دارم: من یک table دارم که در یکی از ستون هاش میخوام از یک لیست کشویی با قابلیت جستجو استفاده کنم.
از این روش آموزشی شما که استفاده میکنم با گسترش table دیگه نمیتونم از قابلیت جستجو استفاده کنم.
چه راهکاری برای این مشکل دارید
ممنون میشم راهنمایی کنید من رو
درود بر شما
از ترکیب Cell(“address”) و indirect استفاده کنید
و شرط رو روی این ترکیب بذارید که هربار سلول جاری رو در نظر بگیره
سلام من می خوام که این لیست در سطرهای یک جدول تکرار کنم و در هر سطر یک داده را جستجو کنم ممنون می شوم راهنمایی کنید چیکار کنم؟وقتی به سطر دوم می رود کار نمی کند و تمام سطرها مقدار اولیه را نگهداری می کنند.
درود بر شما
خواهش میکنم
شرط فرمول رو بجای اینکه بگید مستقیم از سلول خاصی (که دیتاولیدیشن داره) بخونه از این بخونه:
INDIRECT(CELL(“address”))
این تابع ادرس سلول انتخاب شده هست
من متوجه نشدم!
باید راجع به توابعی که اشاره شد مطالعه کنید
باید کارکردشون رو خوب درک کنید
داخل سایت سرچ کنید مقالات وجود دارن
سلام
من یک فایل اکسل تردد و حقوق و دستمزد طراحی کردم که فقط ورود و خروج پرسنل رو میزنم و گزارش کارکرد روزانه و ماهانه و حقوق و دستمزد (با توجه به حکمش) و بیمه و مالیات وغیره رو خودش خودکار محاسبه میکنه
دستگاه تردد هم گرفتیم برا شرکت ولی برنامه نداره
میخواستم بدونم ممکن هست که این برنامه تحت اکسلی که من نوشتم اطلاعات ورود و خروج رو به صورت اتومات از دستگاه تردد بگیره و ثبت کنه؟
درود
باید ببینید دستگاهتون خروجی اکسل میده؟
سلام
وقت بخیر
بسیار عالی و کاربردی بود ممنونم
سلام خسته نباشید
نیاز فوری به کمک دارم ازتون خواهش میکنم کمک کنید
لیستی شامل عنوان به صورت سطری و تاریخ به صورت ستونی و اعداد صفر و یک جلوی عناوین که نشان دهنده انجام شده یا نشده میباشد دارم میخوام یه جدول بسازم که وقتی تاریخ رو زدم عنوان ها و عدد مربوط به انجام شده رو نشون بدهد
خیلی طف میکنید کمکم کنید اگه بخواهید هزینش رو هم میدم
درود بر شما
بستگی به ساختار فایل و نوع داده ها داره
و میتونید با همین توابع جستجو ایتکار و انجام بدید
جستجوی موارد تکراری رو داخل سایت سرچ کنید ازش ایده بگیرید
پیوت تیبل هم میتونه کمک کنه بهتون
سلام
اموزش بسیار خوبی بود. حتی برای من که ابتداییات اکسل رو هم نمیدونستم عالی بود
این کدها رو توی برنامه خودم پیاده کردم و جواب داد. اما یک سوال:
اگر به همین جدول یکی دو تا ستون دیگه رو هم اضافه کنیم و بخواهیم داده های اونها رو هم در نتیجه جستجومون بیاره چیکار کنیم؟
در حقیقت این برنامه فقط وجود مورد جستجو رو اطلاع میده . در حالیکه نیازه ما بعد از جستجو , اطلاعات دیگه رو هم نشون بده
مثلا وقتی نشون داد البرز، اطلاعات ستونهای دیگه مثل کد اون استان رو هم نشون بده
لطفا راهنمایی بفرمایید
درود بر شما
برای جستجوی موارد مرتبط باید از تابع Vlookup استفاده کنید
ممنون از زحمات شما ، فایل دانلود شده کار نمیکنه!
درود
فایل مشکلی نداره
یا کامل دانلود نشده
یا اینکه نرم افزار زیپ اخرین نسخه نیست
با تشکر
اگر این لیست کشویی در یک تیبل قرار داشته باشد این روش پاسخگو نیست
لطفا راهنمایی کنید
درود
اگر منظورتون تکرار ولیدیشن در سلول های مختلف هست، باید با یک روش، محتوای سلولی که داره پر میشه رو ببرید روی سلولی که قسمتی از نام رو می نویسید
با تشکر از دقت نظرتان
دقیقا همینطور هست . یه جدول مرجع از ۸۰۰ نماد در بورس هست . و در جدول دیگر من نمادهای انتخابی خودم رو وارد میکنم بطوریکه سلول نماد بصورت لیست کشویی هست که با توجه به تعداد زیاد فرصت زیادی گرفته میشود و زیاد خوب نیست . به همین منظور اگر این لیست قابلیت سرچ داشته باشه ورود اطلاعات با سهولت انجام میپذیرد.
و می خواهم در همون سلول سرچ کنم نه اینکه سرچ را یه جای دیگه انجام داد ( فکر کنم اینکار رو در vba انجام داده شود بهتر باشد)
با تشکر از شما لطفا راهنمایی بفرمایید.
درصورت امکان قابیلت ارسال فایل رو هم دارم
خواهش مکینم. عرض کردم راه حل رو… میتونید از تابع cell برای پیدا کردن سلول فعال استفاده کنید و این اموزش رو تکمیل کنید برای خودتون
حالا یا فرمول، یا کدنویسی، هر کدوم مسلط تر هستید انتخاب کنید.
از راهنمایی تون بسیار سپاسگزارم
سلام
از بابت سایت بسیار عالیتون سپاس.
میشه تکرار ولیدیشن در سلول های مختلف در مبحث لیست فرو ریز قابل جستجو رو بیشتر توضیح بدید.
سپاسگذارم
درود بر شما
خواهش میکنم
شرط فرمول رو بجای اینکه بگید مستقیم از سلول خاصی (که دیتاولیدیشن داره) بخونه از این بخونه:
INDIRECT(CELL(“address”))
این تابع ادرس سلول انتخاب شده هست
میخوام تولیستی که با دیتا ولیدیشن ایجاد چون خیلی زیاد است قابلیت جستجو بگذارم مانند فیلتر کردن که در خود اکسل انجام می دهیم که یک یا دو تا حرف را می زنیم و اینطوری جستجو سریعتر می شود تا این که بخواهیم خود لیست را کامل بگردیم
درود بر شما
دقیقا زیر مقاله آموزشی که جواب شماست، سوال مطرح کردید.
مطالعه بفرمایید و از فایل نمونه استفاده کنید
سرکار خانم خاکزاد
با سلام و احترام
مطالبتون بسیار بسیار کاربردی و مفید می باشند، چند وقتی میشه که به دنبال این موضوع بودم خیلی خیلی سپاسگزارم خیلی به کارم اومد.
سلام وقت بخیر.
یک صفحه داریم که دو ستون دارد.ستون اول تاریخ روز و ستون دوم قیمت روز.
می خواهیم بیشترین مقدار قیمت هر ماه با تاریخ متعلق به آن روز در دو ستون دیگه نمایش داده بشه.ولی داده ها برای بیست سال می باشد و همچنین تعدادزیادی فایل.با استفاده از از فرمول =INDEX(…,MATCH(MAX(…..),…..,0)) ( روزهای پنجشنبه و جمعه و تعطیلات داده نداریم ) بیشترین قیمت هر ماه را بدست میارم که بسیار وقت گیر هست. این داده ها برای موارد زیادی هم هست که کار رو خیلی سخت تر میکنه.اگر امکان دارد راهنمایی بفرمایید.متشکرم.
درود بر شما
بستگی داره که تاریخ میلادی باشه یا شمسیو اگه شمسی هست با چه فرمتی…
بهتره سوال رو در مقیاس کوچک مطرح کنید و مثال بزنید که خواستتون واضح بشه
سلام، واقعا نوع نشر دانش شما قابل تحسین است، موید باشید.
از محتوای فایل های کمکی شما خیلی بهره مند شدم
سلام من تازه میخوام اکسل را یاد بگیرم
ی روشی میخوام زود یاد بگیرم و برام سخت نباشه
ممنون
درود بر شما
پیشنهاد میکنم از این مجموعه استفاده کنید.
خودم مدرس هستم و از صفر اموزش داده شده. علاوه بر اینکه پشتیبانی هم با خودم هست و میتونید سوالاتتون و بپرسید
https://excelpedia.net/product/start-excel/
الان هم جشنواره هست و تخفیف خورده محصولات
با تشکر از شما بابت پاسخگویی سریعتون
از تابع IF استفاده کردم و همچنین ترکیبش با توابع SUM , COUNTIF
مساله ای که دارم این هست که تابع خیلی طولانی میشه
به اینصورت که اگر به طور مثال عدد سلول ۳ باشه، با تابع کانت ایف باید بررسی بشه که تعداد خونه های غیر صفر از از ابتدای ردیف ۳ هست یا خیر که اگه نباشه باید یک سلول دیگه به رنج کانت ایف اضافه شه و باز بررسی صورت بگیره و همین طور تا آخر
و این خیلی طولانی هست و امکان اشتباه زیاده.
جزئیات سوال مشخص نیست
باید ساختار و خواسته دقیق مشخص باشه
چیزی که برداشت کردم بدون یاز به if و با offset شدنی هست
باز هم برای ارائه جزئیات بیشتر به گروه تلگرامی برید و اونجا توضیحات به همراه عکس یا فایل بذارید تا دوستان راهنمایی کنن
سلام
وقت شما بخیر
من میخوام در یک سلولی اعدادی بین ۱ تا۴ قرار بدم و بعد برحسب عددی که در این مقدار قرار داره به همون تعداد سلول های موجود دریک ردیف رو جمع کنه با این شرط که اگر خانه های ردیف صفر بود آنها را به حساب نیاورد
درود بر شما
از تابع Offset کمک بگیرید و برای صفر بودن مقادیر، تعدادشو با countif حساب کنید و به مقدار مورد نظر اضافه کنید
https://excelpedia.net/offset-function/