نحوه انتخاب یک سلول با مقدار یکسان با vba

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

    • 2018/06/23
    • 10

    نحوه انتخاب یک سلول با مقدار یکسان با vba

    سلام دوستان

    من یک شیت دارم که داخلش کد های پرسنلی ذخیره شده - در همون شیت میخوام با ماکرو نویسی بگم هر سلولی که مقدارش با سلول N1 یکی هست رو Select و کپی کن - با توجه به اینکه شاید یک کد پرسنلی بصورت پراکنده در ردیف های مختلف تکرار شده باشه.
    Click image for larger version

Name:	Capture.PNG
Views:	1
Size:	59.9 کیلو بایت
ID:	147039
  • rasools13

    • 2017/01/20
    • 360
    • 80.00

    #2
    سلام از کد ذیل میتونید استفاده کنید..
    فایل نمونه هم پیوست شده است
    موفق باشید

    کد PHP:
    Sub MultiSelection()
    '    
    Dim i, col, row, Total_row, MyCode As Integer    
    Dim cel As String   
         
    col = 4                          '
    شماره ستون مورد جست و جو    
    row 
    4                         ' شماره ردیفی از ستون مورد جست و جو که میخواهید جست و جو از ان ردیف شروع شود    
    Total_row = row + 9     '
    بجای عدد تعداد ردیف هایی که میخواهید بررسی شود را وارد کنید    
    MyCode 
    1                  ' مقداری که میخواهید جست و جو کنید همان کدپرسنلی
     '    
    With Application.WorksheetFunction        
             
    For row To Total_row Step 1            
                     
    If Cells(icol) = MyCode Then                
                           cel 
    cel + .Substitute(Cells(icol).Address"$""") + ","            
                     
    End If
           
    Next i
           
    '
           cel = Mid(cel, 1, Len(cel) - 1)
       End With
       Range(cel).Select
       Selection.Copy
    '
    End Sub 
    فایل های پیوست شده
    [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
    [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
    [/CENTER]

    کامنت

    • مرتضی حسینی

      • 2015/06/07
      • 216
      • 33.00

      #3
      چرا از conditional formating استفاده نمی کنید خیلی راحتره فایل \یوست و مشاهده کنید
      97/4/3
      فایل های پیوست شده

      کامنت

      • alper

        • 2018/06/23
        • 10

        #4
        نوشته اصلی توسط rasools13
        سلام از کد ذیل میتونید استفاده کنید..
        فایل نمونه هم پیوست شده است
        موفق باشید

        کد PHP:
        sub multiselection()
        '    
        dim i, col, row, total_row, mycode as integer    
        dim cel as string   
             
        col = 4                          '
        شماره ستون مورد جست و جو    
        row 
        4                         ' شماره ردیفی از ستون مورد جست و جو که میخواهید جست و جو از ان ردیف شروع شود    
        total_row = row + 9     '
        بجای عدد تعداد ردیف هایی که میخواهید بررسی شود را وارد کنید    
        mycode 
        1                  ' مقداری که میخواهید جست و جو کنید همان کدپرسنلی
         '    
        with application.worksheetfunction        
                 
        for row to total_row step 1            
                         
        if cells(icol) = mycode then                
                               cel 
        cel + .substitute(cells(icol).address"$""") + ","            
                         
        end if
               
        next i
               
        '
               cel = mid(cel, 1, len(cel) - 1)
           end with
           range(cel).select
           selection.copy
        '
        end sub 
        ممنونم از شما - دقیقا همینو میخواستم
        یه سوال اینجا که فقط یک سلول رو انتخاب میکنه - میشه گقت هر جایی که با کد من برابر هست اون سطر ها مثلا ( a:c ) کپی کنه؟

        یه سوال دیگه:

        آیا تووی شیتی که مثلاً یک کد پرسنلی فیلتر شده - میشه گفت حالا 25 ردیف اول رو میبینی ( فیلتر شده ) کپی کنه بدون اینکه سلول های فیلتر شده رو کپی نکنه

        ممنون میشم پاسخ بدید

        کامنت

        • rasools13

          • 2017/01/20
          • 360
          • 80.00

          #5
          نوشته اصلی توسط alper
          ممنونم از شما - دقیقا همینو میخواستم
          یه سوال اینجا که فقط یک سلول رو انتخاب میکنه - میشه گقت هر جایی که با کد من برابر هست اون سطر ها مثلا ( a:c ) کپی کنه؟

          یه سوال دیگه:

          آیا تووی شیتی که مثلاً یک کد پرسنلی فیلتر شده - میشه گفت حالا 25 ردیف اول رو میبینی ( فیلتر شده ) کپی کنه بدون اینکه سلول های فیلتر شده رو کپی نکنه

          ممنون میشم پاسخ بدید
          در مورد سوال اول اینکه هر سلول مساوی مقدار مورد نظر روانتخاب و کپی می کنه... فایل \یوست رو ببینید
          در مورد سوال دوم هم فایل نمونه بزارید
          [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
          [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
          [/CENTER]

          کامنت

          • alper

            • 2018/06/23
            • 10

            #6
            نوشته اصلی توسط rasools13
            در مورد سوال اول اینکه هر سلول مساوی مقدار مورد نظر روانتخاب و کپی می کنه... فایل \یوست رو ببینید
            در مورد سوال دوم هم فایل نمونه بزارید
            ببنید تووی فایلی که ضمیمه کردم - 2 تا ستون دارم ( ردیف - نام )

            1 - اونائی که ردیف 1 هست فیلتر میکنم -
            2 - بعد با استفاده از برنامه نویسی ماکرو - میخوام 10 ردیف اولی که بعد از فیلتر نشون میده رو کپی کنه ( بدون اینکه ردیف های مخفی شده رو کپی کنه )

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

            کامنت

            • rasools13

              • 2017/01/20
              • 360
              • 80.00

              #7
              نوشته اصلی توسط alper
              ببنید تووی فایلی که ضمیمه کردم - 2 تا ستون دارم ( ردیف - نام )

              1 - اونائی که ردیف 1 هست فیلتر میکنم -
              2 - بعد با استفاده از برنامه نویسی ماکرو - میخوام 10 ردیف اولی که بعد از فیلتر نشون میده رو کپی کنه ( بدون اینکه ردیف های مخفی شده رو کپی کنه )

              ----
              توضیح :
              میدونم که میتونم بعد از فیلتر شدن کل سلول ها رو کپی کنم تووی یک شیت دیگه اون موقع فقط فیلتر شده ها رو کپی میکنه - ولی یه ایرادی که داره اینه که تووی شیت مقصد بیش از 100000 رکورد خالی هم ایجاد میکنه موقع پیست کردن.
              سلام مجدد
              اگر میخواهید داده های مربوط به یک شماره مشخص را در جای دیگر کپی کنید نیازی به فیلتر کردن و ... نیست... با استفاده از کد ذیل می توانید این کار را انجام دهید

              کد PHP:
              Sub Copy_1()
              Dim rowiMyNumAs Integer
              Range
              ("H:H").Clear
              1
              MyNum 
              Range("G1")
              row Application.WorksheetFunction.CountA(Range("A:A")) - 1
                  
              For 2 To row Step 1
                      
              If Cells(i1) = MyNum Then
                          Cells
              (j8) = Cells(i2)
                          
              1
                      End 
              If 
                 
              Next i
              End Sub 
              با توجه به فایل نمونه ای که فرستادید شماره ردیف مورد نظر را در سلول G1 وارد کرده و این کد را اجرا کنید... مقادیر موجود در ستون دوم (نام) که دارای شماره مورد نظر هستند در ستون H کپی می شوند.. بدون فاصله بین مقادیر
              ...
              فایل نمونه هم پیوست شده است
              فایل های پیوست شده
              [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
              [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
              [/CENTER]

              کامنت

              چند لحظه..