نمایش نتایج: از شماره 1 تا 4 , از مجموع 4

موضوع: جستجو در لیست کشوئی

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1


    آخرین بازدید
    2020/11/06
    تاریخ عضویت
    March 2015
    محل سکونت
    تهران
    نوشته ها
    1,248
    امتیاز
    2327
    سپاس
    600
    سپاس شده
    2,238 در 1,001 پست
    تعیین سطح نشده است

    جستجو در لیست کشوئی

    با سلام

    برای ایجاد لیست کشویی با قابلیت جستجو ما به سه مرحله پردازش نیاز داریم:

    1-تنظیمات combo box از ActiveX Controls
    2-پردازش اطلاعات لیست
    3-استفاده از یک کد کوتاه vba در قسمت کد نویسی


    ابتدا از تب Developer از برگه insert یک combo box به شیت اضافه میکنیم.
    فایل پیوست 10564

    با کلیک راست بر روی combo box و انتخاب گزینه properties موارد زیر را بر روی combo box انجام میدهیم :
    قسمت AutoWordSelect را برابر با false قرار میدهیم.
    LinkedCell را برابر آدرس مورد نظر که قراره لیست در آن نمایش داده شود قرار دهید . ( درفایل نمونه توضیحی سلول a3 میباشد)
    در قسمت ListFillRange یک نام قرار بدید مثلا DropDownList ( توجه داشته باشید در قسمت name manager با همین نام باید محدوده ای پویا را نامگذاری کنیم.)
    در قسمت MatchEntry گزینه 2 – fmMatchEntryNone را انتخاب کنید.

    فایل پیوست 10565

    فایل پیوست 10566

    به شیت لیست اسامی بر میگردیم .

    در اولین ستون کمکی (h) ابتدا با استفاده از فرمول

    کد PHP:
    =--ISNUMBER(IFERROR(SEARCH(Sheet4!$A$3;A2;1);"")) 
    از وجود نزدیک ترین حروف تایپی به ستون نام و نام خانوادگی مطلع میشیم.چنانچه نام مورد نظر و یا نزدیک ترین حروف به آن وجود داشت عدد 1 و در غیر اینصورت عدد صفر میگیره.

    در ستون کمکی دوم (i) هم با این استفاده ازفرمول زیر تعداد 1 ها یعنی مورد های نزدیک به جستجو شمارش میشن و یک ها( نام های مورد نظر ) رو رو به نوعی از هم تفکیک میکنیم که در مرحله بعد قابل بازیابی و تشخیص باشند .

    کد PHP:
          =IF(H2=1;COUNTIF($H$2:H2;1);""
    در ستون سوم کمکی (j) با استفاده از این فرمول تمام موارد یافته شده رو لیست میکنیم.

    کد PHP:
    =IFERROR(INDEX($A$2:$A$33;MATCH(ROWS($I$2:I2);$I$2:$I$33;0));""
    ستون سوم لیست اصلی ماست که باید نمایش داده بشه که با استفاده از name mangerو انتخاب نام DropDownList (دقیقا نامی که در combo box قرار داده شد) و قرار دادن محدوده پویای آن در قسمت Refers to که در این فایل نمونه توضیحی محدوده زیر میباشد.

    کد PHP:
    =$J$2:INDEX($J$2:$J$33;MAX($I$2:$I$33);1
    و در آخر یک کد کوتاه vba رو باید در قسمت کد نویسی شیتی که combo box در آن قرار داره بنویسید.

    کد:
    Private Sub ComboBox1_Change()
    ComboBox1.ListFillRange = "DropDownList"
    Me.ComboBox1.DropDown
    End Sub
    منابع مورد استفاده در نمونه فایل ارسالی پیوست گردید.
    موفق باشید.
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    تصاویر کوچک فایل پیوست تصاویر کوچک فایل پیوست Excel-Drop-Down-Search-Box-Suggestion-Combo-Box.png   Excel-Drop-Down-Search-Box-Suggestion-Combo-Box-Properties.png   Search-Suggestion-Combobox-settings.png  
    فايل هاي پيوست شده فايل هاي پيوست شده
    ای برادر تو همه اندیشه ای


  2. #2

    آخرین بازدید
    2021/11/16
    تاریخ عضویت
    August 2017
    نوشته ها
    2
    امتیاز
    10
    سپاس
    0
    سپاس شده
    0 در 0 پست
    تعیین سطح نشده است

    ممنون ولی فقط تا 20 اسم جستجو میکنه و اسم21م به یعد رو نمیشناسه. من فرمولها را تا خانه 99 هم درگ کردم و عملا خونه 20 با 21 هیچ فرقی نداره ولی نتیجه فرمول na و در نتیجه خالیه.
    لطفاً بررسی کنید.
    فايل هاي پيوست شده فايل هاي پيوست شده

  3. #3
    mokaram آنلاین نیست.
    مدير تالار اکسل و بانک اطلاعاتی


    محصولات کاربر

    ويدئوي ايجاد سطح دسترسي
    آخرین بازدید
    2023/04/20
    تاریخ عضویت
    February 2011
    محل سکونت
    ســــاوه
    نوشته ها
    1,805
    امتیاز
    6409
    سپاس
    8,100
    سپاس شده
    5,163 در 1,502 پست
    سطح اکسل
    74.00 %

    mokaram به Yahoo ارسال پیام
    دوست عزیز فرمولها را ببینید فقط برای سل های محدودی نوشته شده. اونا را بسط بدید ، بازه تغییر میکنه ( name manager را هم ببینید )



  4. #4

    آخرین بازدید
    2020/06/21
    تاریخ عضویت
    June 2020
    نوشته ها
    2
    امتیاز
    10
    سپاس
    0
    سپاس شده
    0 در 0 پست
    تعیین سطح نشده است

    ایجاد لیست فرو ریز قابل جستجو در اکسل
    فرض کنید لیستی داریم از اسامی استان های ایران و میخواهیم با تایپ قسمتی از نام یک استان، لیست محدودتری برای انتخاب داشته باشیم.
    منطق کلی کار این هست که باید لیستی از سلول هایی که شامل عبارت مورد نظر ما هستن رو ایجاد کنیم و به عنوان ورودی لیست دیتاولیدیشن قرار بدیم. برای انجام این کار، طبق مراحل زیر پیش میریم:


    گام اول: پیدا کردن عبارت مورد نظر
    تابعی که میتونه جستجو کنه ببینه یک عبارت در یک سلول وجود داره یا نه تابع Find/Search هست. این دو تابع در مورد سرچ فارسی عینا مشابه عمل میکنن. در صورت پیدا کردن عبارت مورد نظر، خروجی عدد و در غیر اینصورت خطای #Value! خواهد بود.
    پس با فرض اینکه لیست مورد نظر قراره در سلول D1 ایجاد بشه، فرمول زیر رو مینویسیم.
    =FIND ($D$1 , A2)

    در صورتی که عبارت مورد نظر پیدا بشه، خروجی عدد خواهد بود و در غیر اینصورت خطا.


    گام دوم: شماره گذاری موارد پیدا شده
    حالا برای اینکه خروجی جستجو رو به گونه ای تغییر بدیم که بتونیم سلول های پیدا شده رو پشت سر هم لیست کنیم، از تابع زیر استفاده میکنیم و سلول های پیدا شده رو شماره ردیف میزنیم.
    =IF ( ISNUMBER ( FIND ($D$1,A2) ) ,MAX ($B$1:B1) +1 ,”” )


    در واقع تابع Isnumber چک میکنه که آیا خروجی تابع Find عدد هست یا نه. اگه عدد بود، ماکزیمم محدوده بالای سرشو باضافه 1 میکنه، اگر هم عدد نبود (خطا بود) خالی میذاره. مقابل دو استان که شامل عبارت “رد” هستن، یعنی اردبیل و کردستان، به ترتیب شماره 1 و 2 نمایش داده می شه.


    گام سوم: لیست کردن موارد پیدا شده
    حالا کافیه که سلول های مشخص شده رو پشت سر هم لیست کنیم. برای این کار میتونیم از 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)


    برای درک بهتر محدوده های نامگذاری داینامیک، این مقاله را مطالعه کنید.


    نکته:
    تابع
    COUNTIF( Sheet2!$C$2:$C$32 , “?*” )
    تعداد سلول های پر که داده نمایش میدن رو شمارش میکنه و کاری به سلول هایی که با فرمول پر شدن ولی خالی نمایش داده میشن نداره.

    گام پنجم: ایجاد لیست کشویی
    کافیه که نام ایجاد شده رو به Data Validation اختصاص بدیم. برای این کار روی سلول D1 کلیک کرده و از تب Data گزینه Data Validation رو انتخاب میکنیم. از تب Settings گزینه List رو انتخاب میکنیم و نام تعیین شده که در گام چهارم فرمول نویسی کردیم رو تخصیص میدیم. قبل از اینکه Ok رو بزنیم، به تب Error Alert رفته و تیک گزینه اخطار رو برمیداریم و بعد Ok رو میزنیم. حالا کافیه عبارت مورد نظر رو در سلول D1 تایپ کنیم و بعد لیست فروریز رو باز کنیم. می بینیم که فقط سلول هایی که شامل اون عبارت هستن در لیست نمایش داده میشه. امیدورام مطلب مفيدي بوده باشد.
    ویرایش توسط Amir Ghasemiyan : 2020/06/13 در ساعت 10:29 دلیل:حذف لينك هاي غير مرتبط


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پرسش جستجوی اطلاعات در لیست باکس و نمایش آن در لیست باکس یا...
    توسط kamyar در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 11
    آخرين نوشته: 2019/02/27, 11:11
  2. پرسش استخراج اطلاعات از لیست
    توسط mjigar در انجمن سوالات اكسل - Excel Questions
    پاسخ ها: 3
    آخرين نوشته: 2017/12/14, 21:36
  3. پاسخ ها: 0
    آخرين نوشته: 2016/11/01, 09:49
  4. جستجوی اسامی یک لیست در لیست مرجع
    توسط reshehri در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 1
    آخرين نوشته: 2014/01/13, 20:22

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

آموزش search box در اکسل

لیست کشویی لا قابلیت‌جستجو

کدهای جست و جو در ماکرو اکسل

ایجاد کمبو باکس با جستجوی داینامیک در اکسل

کمبو باکس جستجو در اکسل

لیست کشویی جستجو اکسل vba

کد vba لیست از یک پوشه

ListFillRange: DropDownList

جستجو در کمبو باکس اکسل

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است
با ما در تماس باشيد