معادل vlookup در vba چی هست؟

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • esyoo

    • 2010/03/09
    • 151

    معادل vlookup در vba چی هست؟

    سلام
    دوستان می خواستم بدونم معادل vlookup در vba چی هست؟
    در واقع می خوام اگر کد پرسنلی رو وارد کردم نام و نام خانوادگی طرف درست جلوش ظاهر بشه
    با توجه به عکس
    با تشکر
  • shamsololama

    • 2010/02/15
    • 940

    #2
    RE: معادل vlookup در vba چی هست؟

    با درود فراوان
    با روشهای مختلفی میشه این کار رو انجام داد
    یک نمونه را در اینجا مثال می زنم

    Private Sub TextBox1_Change()
    On Error Resume Next
    TextBox2.Text = ""
    TextBox3.Text = ""
    With Sheet1.Range("a1:a20000")
    Set c = .Find(TextBox1.Text, LookIn:=xlValues, LookAt:=xlPart)

    End With
    If c.Text = TextBox1.Text Then
    TextBox2.Text = c.Offset(0, 1).Text
    TextBox3.Text = c.Offset(0, 2).Text
    End If
    End Sub


    کد با توضیح هر خط از کد



    Private Sub TextBox1_Change()
    On Error Resume Next
    TextBox2.Text = "" 'تکس باکس راخالي ميکند
    TextBox3.Text = "" ' تکس باکس 3 را خالي ميکند
    With Sheet1.Range("a1:a20000") 'رنج مورد نظر را مشخص ميکنيم
    Set c = .Find(TextBox1.Text, LookIn:=xlValues, LookAt:=xlPart) ' متن داخل تکس باکس يک يا همان کد را جستجو ميکند

    End With
    If c.Text = TextBox1.Text Then 'به شرط اينکه کد مورد نظر پيدا شود
    TextBox2.Text = c.Offset(0, 1).Text ' يک خانه جلوتر از خانه کد پيدا شد يعني نام را درتکست 2 وارد مي شود
    TextBox3.Text = c.Offset(0, 2).Text ' يک خانه جلوتر از خانه کد پيدا شد يعني نام خانوادگي را درتکست 3 وارد مي شود
    End If
    End Sub

    File #1: http://www.lon.ir/up/uploads/1281225920.rar
    ---------------------------------------------------------------------------------------------------
    بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
    shamsololama@yahoo.com
    09177733411

    کامنت

    • esyoo

      • 2010/03/09
      • 151

      #3
      RE: معادل vlookup در vba چی هست؟

      سلام
      با تشکر از شما
      ممنون از اینکه وقت گذاشتید.
      خواهشا اگر امکانش هست نمونه فایل هاتون رو در سایت http://www.4shared.com/ قرار بدید.اول در اون ثبت نام کنید و سپس فایل هاتون رو آپلود کنید فعلا تا 10 گیگ مجانی می تونید فایل داخلش آپلود کنید.
      1)دیگه لینک ها پاک نمیشه
      2)اگر سایتش فیلتر بشه به راحتی میشه از طریق سایت http://rapidbaz.com/from/9027 لینک مورد نظر رو دانلود کرد.
      3)یک آرشیو کامل دارید و با ورود بهش خیلی کار ها می تونید انجام بدید.
      تصاویری از پنل مدیریتی هر یوزر




      متاسفانه من نمونه فایل شما رو نتونستم دانلود کنم اگر امکانش هست در این سایت آپلود کنید.

      کامنت

      • esyoo

        • 2010/03/09
        • 151

        #4
        RE: معادل vlookup در vba چی هست؟

        آیا می توان نمودار را روی یوزر فورم نمایش داد؟

        کامنت

        • shamsololama

          • 2010/02/15
          • 940

          #5
          RE: معادل vlookup در vba چی هست؟

          با درود فراوان
          بله همانطور که یک تکس باکس و یا یک لیبل رو رو یوزفرم قرار می دهی یک چارت هم میتوان به فرم اضافه کرد
          اگر روی تولز باکس چارت نداری با راست کلیک روی یکی از آبجکت ها به منوی additional controls رفته و آن را تیک بزنید
          ---------------------------------------------------------------------------------------------------
          بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
          shamsololama@yahoo.com
          09177733411

          کامنت

          • esyoo

            • 2010/03/09
            • 151

            #6
            RE: معادل vlookup در vba چی هست؟

            با سلام و تشکر
            اگر منظور شما این هست




            که من هر کار کردم نتونستم چیزی اضافه بکنم!

            کامنت

            • shamsololama

              • 2010/02/15
              • 940

              #7
              RE: معادل vlookup در vba چی هست؟

              با درود فراوان
              با کلیک بر روی additional controls مراحل زیر را باید طی کنید.

              [][/]


              مرحله دوم

              [i][/]

              یادت باشه جایی که با فلاش قرمز مشخص کردم نباید تیک خورده باشه تا آبجکهای تیک نخورده رو بتونی ببینی
              ---------------------------------------------------------------------------------------------------
              بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
              shamsololama@yahoo.com
              09177733411

              کامنت

              • esyoo

                • 2010/03/09
                • 151

                #8
                RE: معادل vlookup در vba چی هست؟

                با سلام مجدد متاسفانه additional controls برای من کار نمی کنه و هر بار که روش کلیک میکنم هیچ اتفاق خاصی نمی افته!

                اما سوال جدیدم پیدا کردن تکراری ها)
                فرض کنید مثل عکس زیر من 3 نفر به نام اسماعیلی دارم و می خوام هر 3 نفر رو پیدا کنم و در TextBox نشون بدم.چطور باید این کار رو بکنم؟

                کامنت

                • shamsololama

                  • 2010/02/15
                  • 940

                  #9
                  RE: معادل vlookup در vba چی هست؟

                  با درود فراوان
                  در مورد اینکه کنترلها برای شما باز نمیشه احتمالا آفیس رو کامل نسب نکردید اگر کامل نسب کنید فکر کنم درست میشه

                  و در مورد سئوال می خواهید جستجو را از چه کدام فیلد انجام دهید با نام و یا نام خانوادگی و یا سال و یا می خواهید فیلد جستوجو متغییر باشد که هر زمان خواستید برابر با فیلد دلخواه سرچ کنید
                  و معمولا برای جستو به نظرمن اگر از لیست باکس استفاده کنید بهتر از تکست باکس و راحت تر است ولی در هردو صورت امکان پذیر است
                  می توانید از
                  find
                  و همچنین از حلقه
                  for each
                  استفاده کنید
                  ---------------------------------------------------------------------------------------------------
                  بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
                  shamsololama@yahoo.com
                  09177733411

                  کامنت

                  • esyoo

                    • 2010/03/09
                    • 151

                    #10
                    RE: معادل vlookup در vba چی هست؟

                    با تشکر
                    من اکسل 2003و2007و2010 رو همزمان نصب دارم(البته فقط اکسل) و به صورت complete هم هست.اما متاسفانه درست نمیشه!(دوباره پاک کردم نصب کردم .نشد که نشد)

                    با توجه به عکس سال برام مهم هست
                    ولی فکر نمی کردم که بشه هر سه فیلد (سال و نام و نام خانوادگی) رو به طور همزمان استفاده کرد.

                    منظور شما از لیست باکس این هست؟(در مقایسه با کدی که در پست 3 معرفی کردید)
                    Private Sub TextBox1_Change()
                    On Error Resume Next
                    ListBox1.Text = ""
                    ListBox2.Text = ""
                    With Sheet1.Range("a1:a20000")
                    Set c = .Find(TextBox1.Text, LookIn:=xlValues, LookAt:=xlPart)
                    End With
                    If c.Text = TextBox1.Text Then
                    ListBox1.Text = c.Offset(0, 1).Text
                    ListBox2.Text = c.Offset(0, 2).Text
                    End If
                    End Sub

                    با تشکر

                    کامنت

                    • shamsololama

                      • 2010/02/15
                      • 940

                      #11
                      RE: معادل vlookup در vba چی هست؟

                      با درود فراوان

                      نه از لیست باکس بصورت زیر استفاده کنید کدی که در کلید جستجو قرار دارد هم بصورت زیر است


                      [img] [/img]



                      Private Sub CommandButton1_Click()

                      For Each c In Range("a1:a10")
                      If c.Value = TextBox1.Text And c.Offset(0, 2).Value = TextBox2.Text Then

                      ListBox1.AddItem c
                      ListBox1.List(ListBox1.ListCount - 1, 1) = c.Offset(0, 1).Value
                      ListBox1.List(ListBox1.ListCount - 1, 2) = c.Offset(0, 2).Value
                      End If
                      Next
                      End Sub
                      ---------------------------------------------------------------------------------------------------
                      بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
                      shamsololama@yahoo.com
                      09177733411

                      کامنت

                      • esyoo

                        • 2010/03/09
                        • 151

                        #12
                        RE: معادل vlookup در vba چی هست؟

                        با تشکر از شما
                        حالا 3 تا مشکل دارم:
                        1)من یک اسم طولانی دارم و اصلا توی لیست باکس جا نمیشه!باید چکار کنم؟(به عکس توجه کنید)
                        3)توی عکسی که شما گذاشتید اسم و فامیل و سال دقیقا در مرکز هستند.چطور این کار رو کردید؟
                        2)اگر کلیک جستجو رو هر باز بزنم باز هم برام جستجو میکنه و لی من این رو نمیخوام.(به عکس توجه کنید)

                        کامنت

                        • shamsololama

                          • 2010/02/15
                          • 940

                          #13
                          RE: معادل vlookup در vba چی هست؟

                          با درود فراوان
                          جواب سئوال یک :وقتی روی لیست باکس کلیک کرده اید درقسمت Properties نگاه کنید جلوی columnWidths اندازه ستون های لیست باکس را می توانید مشخص کنید مثل 200,300,400 که این اعداد همانطور که می بینید با کاما از هم جدا شده و به منظور این است ستون اول 200pt و ستون دوم 300pt و ستون سوم که به اندازه لیست باکس بستگی دارد اگر فضای باقی مانده بیشتر از 400 باشد همان فضای باقی مانده به آن اختصاص داده می شود و اگر کمتر باشد هم فضای لیست باکس بزرگتر می شود و نوار لغزنده آن ظاهر می شود

                          جواب سئوال دو: برای اینکار نیز در پرو پرتیس لیست باکس TextAlign رو تنظیم کن روی وسط چین

                          جواب سئوال سه :در بالای کد خود ListBox1.Clear اضافه کن مثل کد زیر با این کار هر بار قبل از جستجو لیست باکس را خالی می کند و بصورت تکراری جستو ها به لیست باکس اضافه نمی شوند.

                          Private Sub CommandButton1_Click()
                          ListBox1.Clear
                          For Each c In Range("a1:a10")
                          If c.Value = TextBox1.Text And c.Offset(0, 2).Value = TextBox2.Text Then

                          ListBox1.AddItem c
                          ListBox1.List(ListBox1.ListCount - 1, 1) = c.Offset(0, 1).Value
                          ListBox1.List(ListBox1.ListCount - 1, 2) = c.Offset(0, 2).Value
                          End If
                          Next
                          End Sub
                          ---------------------------------------------------------------------------------------------------
                          بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
                          shamsololama@yahoo.com
                          09177733411

                          کامنت

                          • esyoo

                            • 2010/03/09
                            • 151

                            #14
                            RE: معادل vlookup در vba چی هست؟

                            عبارت ListBox1.AddItem c
                            چه کاری رو انجام میده؟

                            موقع سرچ من می خوام 1380 دیده نشه و فقط نام و نام خانوادگی بیاد چه کار باید بکنم؟




                            اگر عبارت ListBox1.AddItem c پاک کنم به مشکل بر می خورم!
                            میشه راهنمایی کنید

                            کامنت

                            • shamsololama

                              • 2010/02/15
                              • 940

                              #15
                              RE: معادل vlookup در vba چی هست؟

                              با درود فراوان

                              برای اینکه کدها یا همان 180 رو نداشته باشی و فقط نام و نام خانوادگی رو در لیست باکس نشون بده باید بصورت زیر عمل کنی

                              در واقع ListBox1.AddItem c هنگام جستجو c که متغیر است را در صورت برقرار بودن شرط
                              را ADD می کند با وارد لیست باکس می کند که اگر آن را وارد نکنیم یعنی ListBox1.AddItem c را پاک کنیم دچار مشکل می شود

                              و باید بجای C می نویسیم c.Offset(0, 1).Value

                              و بجایی c.Offset(0, 1).Value در خط دوم می نویسیم c.Offset(0, 2).Value

                              و خط سوم را پاک میکنیم یعنی
                              ListBox1.List(ListBox1.ListCount - 1, 1) = c.Offset(0, 2).Value


                              و کد بصورت کلی به شکل کد زیر می توان استفاده کرد


                              Private Sub CommandButton1_Click()
                              ListBox1.Clear
                              For Each c In Range("a1:a10")
                              If c.Value = TextBox1.Text And c.Offset(0, 2).Value = TextBox2.Text Then
                              ListBox1.AddItem c.Offset(0, 1).Value
                              ListBox1.List(ListBox1.ListCount - 1, 1) = c.Offset(0, 2).Value
                              End If
                              Next
                              End Sub
                              ---------------------------------------------------------------------------------------------------
                              بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
                              shamsololama@yahoo.com
                              09177733411

                              کامنت

                              چند لحظه..