درخواست راهنمایی اضطراری در خصوص مشکل ماکرو

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • mehdi.chatrbahr

    • 2019/02/17
    • 5

    [حل شده] درخواست راهنمایی اضطراری در خصوص مشکل ماکرو

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


    کد:
    کد:
    Sub M_E()
    Dim bdata As Boolean
    Dim i, lr, lr2, h, chk As Long
    Dim fDir As String
    With Application
    lr = Cells(Rows.Count, 1).End(3).Row
        .ScreenUpdating = False    
            For i = 2 To lr        
            h = 2        
                Do While h < 8            
                    If Cells(i, 10) = Sheets(2).Cells(h, 2) Then
                        Range("a" & i).EntireRow.Delete
                        i = i - 1
                    End If
                    h = h + 1               
                Loop       
            Next   
            lr2 = Cells(Rows.Count, 1).End(3).Row       
            For i = 2 To lr2        
                h = 2
                bdata = True            
                    Do While h < 16               
                        If Cells(i, 6) <> Sheets(2).Cells(h, 1) And Cells(i, 6) <> Empty Then                    
                           For chk = 2 To 16                       
                               If Cells(i, 6) = Sheets(2).Cells(chk, 1) Then                           
                                   bdata = False
                                   Exit For                               
                               End If                           
                           Next chk                       
                           If bdata = True Then                       
                               Range("a" & i).EntireRow.Delete
                               i = i - 1                        
                           End If                       
                        End If                    
                        h = h + 1                
                    Loop       
            Next
        .ScreenUpdating = True
        .DisplayAlerts = False
            fDir = ThisWorkbook.Path & "\new file.xlsx"
            ActiveWorkbook.SaveAs Filename:=fDir, FileFormat:= _
            xlOpenXMLWorkbook, CreateBackup:=False
        .DisplayAlerts = True
    End With
    End Sub
    فایل های پیوست شده
    Last edited by Amir Ghasemiyan; 2019/08/09, 10:45. دلیل: قرار دادن کدها در تگ مربوطه
    به توانایی هات باور داشته باش، تو قابلیت انجام دادن سخترین ها رو داری فقط کافیه اراده کنی و قدم برداری
  • misammisam
    مدير تالار حسابداری و اکسل

    • 2014/04/04
    • 892
    • 64.00

    #2
    سلام
    برای اطلاعات بالا بهتره از AdvancedFilter استفاده کنید ، جستجوتونو داینامیکم میکنه ، البته برای آیتمهای میلیونی حتما یکم زمانو میبره ولی خوب بنظر من بهتر از روشهای دیگست .


    کد PHP:
    Private Sub CommandButton1_Click()
        
    Sheets("sheet1").Range("Table[#All]").AdvancedFilter Action:=xlFilterCopy_
            CriteriaRange
    :=Range("A2:M17"), CopyToRange:=Range("A19"), Unique:=False
        ActiveWindow
    .SmallScroll Down:=6
    End Sub 
    فایل های پیوست شده
    [CENTER][SIGPIC][/SIGPIC]
    [/CENTER]
    [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
    [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
    [/CENTER]
    [/INDENT]

    [/FONT][/FONT][/FONT][/FONT][/FONT]
    [/CENTER]

    کامنت

    • M_ExceL

      • 2018/04/23
      • 677

      #3
      نوشته اصلی توسط mehdi.chatrbahr
      سلام
      من یه فایل اکسل دارم که حدود یک میلیون رکورد داخلش هست، بخش زیادی از محتوای این اکسل رو میخوام بر اساس چندین شرط از پیش تعین شده حذف کنم.
      به کمک یکی از اساتید ماکرویی تهیه شد که در حجم کم این امکان رو داره ولی توی حجم دیتای سنگین هنگ میکنه و جواب نمیده.
      از سایر اساتید ارجمند تقاضای بررسی و راهنمایی فوری دارم.
      ممنون میشم مساعدت بفرمایید.


      کد:
      کد:
      Sub M_E()
      Dim bdata As Boolean
      Dim i, lr, lr2, h, chk As Long
      Dim fDir As String
      With Application
      lr = Cells(Rows.Count, 1).End(3).Row
          .ScreenUpdating = False    
              For i = 2 To lr        
              h = 2        
                  Do While h < 8            
                      If Cells(i, 10) = Sheets(2).Cells(h, 2) Then
                          Range("a" & i).EntireRow.Delete
                          i = i - 1
                      End If
                      h = h + 1               
                  Loop       
              Next   
              lr2 = Cells(Rows.Count, 1).End(3).Row       
              For i = 2 To lr2        
                  h = 2
                  bdata = True            
                      Do While h < 16               
                          If Cells(i, 6) <> Sheets(2).Cells(h, 1) And Cells(i, 6) <> Empty Then                    
                             For chk = 2 To 16                       
                                 If Cells(i, 6) = Sheets(2).Cells(chk, 1) Then                           
                                     bdata = False
                                     Exit For                               
                                 End If                           
                             Next chk                       
                             If bdata = True Then                       
                                 Range("a" & i).EntireRow.Delete
                                 i = i - 1                        
                             End If                       
                          End If                    
                          h = h + 1                
                      Loop       
              Next
          .ScreenUpdating = True
          .DisplayAlerts = False
              fDir = ThisWorkbook.Path & "\new file.xlsx"
              ActiveWorkbook.SaveAs Filename:=fDir, FileFormat:= _
              xlOpenXMLWorkbook, CreateBackup:=False
          .DisplayAlerts = True
      End With
      End Sub
      سلام،
      پاسخ شما در تاپیک قبلی داده شد، امیدوارم مشکلتون رو حل کنه،
      یا حق.
      [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
      [/CENTER]

      کامنت

      چند لحظه..