
ایجاد لیست قابل جستجو در اکسل
تا حالا نحوه ایجاد لیست در اکسل و نحوه ایجاد لیست های به هم وابسته در اکسل رو یاد گرفتیم. حالا میخوایم لیستی تهیه کنیم که قابل جستجو باشه. در واقع تعداد زیادی داده در لیست فروریز داریم که میخوایم قسمتی از عبارت مورد نظر رو که تایپ کردیم، لیست مورد نظر، کوتاه بشه و فقط آیتم هایی رو نشون بده که شامل اون عبارت هستن، در واقع قصد داریم لیست فروریز قابل جست و جو در اکسل ایجاد کنیم.
فرض کنید لیستی داریم از اسامی استان های ایران و میخواهیم با تایپ قسمتی از نام یک استان، لیست محدودتری برای انتخاب داشته باشیم.
منطق کلی کار این هست که باید لیستی از سلول هایی که شامل عبارت مورد نظر ما هستن رو ایجاد کنیم و به عنوان ورودی لیست دیتاولیدیشن قرار بدیم. برای انجام این کار، طبق مراحل زیر پیش میریم:
گام اول: پیدا کردن عبارت مورد نظر برای ایجاد لیست قابل جست و جو
تابعی که میتونه جستجو کنه ببینه یک عبارت در یک سلول وجود داره یا نه تابع 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 , “?*” ) ,1)
برای درک بهتر محدوده های نامگذاری داینامیک، مقاله مربوط به Offset رو مطالعه کنید.
تابع COUNTIF( Sheet2!$C$2:$C$32 , “?*” ) تعداد سلول های پر که داده نمایش میدن رو شمارش میکنه و کاری به سلول هایی که با فرمول پر شدن ولی خالی نمایش داده میشن نداره.

شکل ۴- لیست فروریز قابل جست و جو – نامگذاری محدوده بصورت داینامیک
گام پنجم: ایجاد لیست کشویی
کافیه که نام ایجاد شده رو به Data Validation اختصاص بدیم. برای این کار روی سلول D1 کلیک کرده و از تب Data گزینه Data Validation رو انتخاب میکنیم. از تب Settings گزینه List رو انتخاب میکنیم و نام تعیین شده که در گام چهارم فرمول نویسی کردیم رو تخصیص میدیم. مطابق شکل ۵

شکل ۵- تخصیص محدوده نامگذاری شده به دیتا ولیدیشن
قبل از اینکه Ok رو بزنیم، به تب Error Alert رفته و تیک گزینه اخطار رو برمیداریم و بعد Ok رو میزنیم. مطابق شکل ۶

شکل ۶- لیست فروریز قابل جست و جو – برداشتن تیک خطا دهی
حالا کافیه عبارت مورد نظر رو در سلول D1 تایپ کنیم و بعد لیست فروریز رو باز کنیم. می بینیم که فقط سلول هایی که شامل اون عبارت هستن در لیست نمایش داده میشه. به تصویر زیر دقت کنید:

با این ۶ گام و با استفاده سلول های کمکی و بدون نیاز به کد VBA تونستیم یک لیست فروریز قابل جستجو تهیه کنیم که میتونه در ورود داده خیلی به ما کمک کنه. حالا میتونیم داده های مرجع رو در یک شیت قرار بدیم و لیست رو در شیت های دیگه که سلول های کمکی استفاده شده هم دیده نشه.
دانلود فایل اکسل لیست قابل جست و جو
برای دانلود فایل لیست کشویی در اکسل روی دکمه زیر کلیک کنید:





سلام تشکر وبابت آموزش های عالی
فقط یه سوال آیا میشه طوری لیست رو فرمول نویسی کرد که دیگه نیاز به باز کردن لیست نباشه یعنی با نوشتن قسمتی از متن لیست بصورت پیش فرض نمایش داده بشه
ممنون
درود بر شما
در دیتاولیدیشن و فعلا تا الان این امکان وجود نداره
با سلام
اگر علاوه بر سلول d1 در سولهای d2 تا d10 هم بخواهیم همینطور دیتا ولیدیشن قابل جستجو بگذاریم چکار باید بکنیم؟
درود بر شما
باید از ترکیب تابع cell و indirect استفاده کنید
در کامنت های همین پست نمونه گذاشته شده
سلام خسته نباشید من میخوام برای فاکتور فروش اینو انجام بدم ولی این برای یک سلول هست میخوام برای هر ردیف فاکتور باشه چیکار باید بکنم دقیق میشه توضیح بدید چون یه جوابی داده بودید نفهمیدم((درود بر شما
خواهش میکنم
شرط فرمول رو بجای اینکه بگید مستقیم از سلول خاصی (که دیتاولیدیشن داره) بخونه از این بخونه:
INDIRECT(CELL(“address”))
این تابع ادرس سلول انتخاب شده هست))
اینو کامل بگید
درود بر شما
کامله دیگه!
کامل نوشتم فرمول رو…
اون قسمت فرمول که شرط هست یعنی سلول D1 رو بردارید این فمرول رو بجاش بذارید
اگر با تابع cell هم اشنا نیستید این مقاله رو بخونید
https://excelpedia.net/cell-function/
ضمن عرض سلام و وقت بخیر، من یک فایل مرجع دارم از اسم و نام مدرسه دانش آموزان. با توجه به اینکه دانش آموزان میرن امتحان میدن و من اسماشونو حفظ نیستم، می خواستم بدونم راهکاری هست توی اکسل که نام دانش آموزان و نمرشوشون رو وارد کنم و بتونه براساس اون فایل مرجع جستجو کنه و براساس اسم هنرستانشون این دانش آموزان و نمره ها رو برام مرتب کنه. ممنون.
درود
بله جستجو با روش های مختلف ممکنه
بستگی به شرایط و دانش کاربر، روش جستجو رو باید مشخص کنید
سلام خانم مهندس خاکزاد، یه لیست کشویی با دیتاولیدیشن ایجاد کردم از طریق ایجاد تیبل که تیبل ها ۵ تا است در یک شیت یعنی ۵ تا ستون کنار هم که هر کدوم تعدادی زیر مجموعه دارند، بعد با دیتا ولی یشم و ایندایرکت توشیت دیگه لیست کشویی رو فراخوان میکنم،اول هر کدوم از سر ستونهاو خونه بعدش زیر مجموعه همون ستون، حالا چه جوری با تایپ قسمتی از هر کدام از لیستها زودتر به نتیجه برسم،یعنی ایندایرکت قابل جستجو شه با این تعداد ستون با تشکر
درود بر شما
باید هر دو منطق “لیست وابسته” و “لیست قابل جستجو ” رو ترکیب کنید
یعنی کاری کنید که لیست هایی که با تیبل درست کردید، داینامیک و بر اساس محتوای سلول تغییر کنن
درود و خسته نباشید
آموزش خیلی خوبی بود.
سوالی دارم: من یک table دارم که در یکی از ستون هاش میخوام از یک لیست کشویی با قابلیت جستجو استفاده کنم.
از این روش آموزشی شما که استفاده میکنم با گسترش table دیگه نمیتونم از قابلیت جستجو استفاده کنم.
چه راهکاری برای این مشکل دارید
ممنون میشم راهنمایی کنید من رو
درود بر شما
از ترکیب Cell(“address”) و indirect استفاده کنید
و شرط رو روی این ترکیب بذارید که هربار سلول جاری رو در نظر بگیره
سلام من می خوام که این لیست در سطرهای یک جدول تکرار کنم و در هر سطر یک داده را جستجو کنم ممنون می شوم راهنمایی کنید چیکار کنم؟وقتی به سطر دوم می رود کار نمی کند و تمام سطرها مقدار اولیه را نگهداری می کنند.
درود بر شما
خواهش میکنم
شرط فرمول رو بجای اینکه بگید مستقیم از سلول خاصی (که دیتاولیدیشن داره) بخونه از این بخونه:
INDIRECT(CELL(“address”))
این تابع ادرس سلول انتخاب شده هست
من متوجه نشدم!
باید راجع به توابعی که اشاره شد مطالعه کنید
باید کارکردشون رو خوب درک کنید
داخل سایت سرچ کنید مقالات وجود دارن
سلام
من یک فایل اکسل تردد و حقوق و دستمزد طراحی کردم که فقط ورود و خروج پرسنل رو میزنم و گزارش کارکرد روزانه و ماهانه و حقوق و دستمزد (با توجه به حکمش) و بیمه و مالیات وغیره رو خودش خودکار محاسبه میکنه
دستگاه تردد هم گرفتیم برا شرکت ولی برنامه نداره
میخواستم بدونم ممکن هست که این برنامه تحت اکسلی که من نوشتم اطلاعات ورود و خروج رو به صورت اتومات از دستگاه تردد بگیره و ثبت کنه؟
درود
باید ببینید دستگاهتون خروجی اکسل میده؟
سلام
وقت بخیر
بسیار عالی و کاربردی بود ممنونم
سلام خسته نباشید
نیاز فوری به کمک دارم ازتون خواهش میکنم کمک کنید
لیستی شامل عنوان به صورت سطری و تاریخ به صورت ستونی و اعداد صفر و یک جلوی عناوین که نشان دهنده انجام شده یا نشده میباشد دارم میخوام یه جدول بسازم که وقتی تاریخ رو زدم عنوان ها و عدد مربوط به انجام شده رو نشون بدهد
خیلی طف میکنید کمکم کنید اگه بخواهید هزینش رو هم میدم
درود بر شما
بستگی به ساختار فایل و نوع داده ها داره
و میتونید با همین توابع جستجو ایتکار و انجام بدید
جستجوی موارد تکراری رو داخل سایت سرچ کنید ازش ایده بگیرید
پیوت تیبل هم میتونه کمک کنه بهتون