簡體   English   中英

VBA過濾剪切和粘貼

[英]VBA to filter cut and paste

一般來說,我是宏和 VBA 的新手。 只是試圖自動化一些過濾,這將節省我大量的時間。 我一直在嘗試使用 excel 中的宏來選擇數據,按某些條件過濾(下面我將它放在一個過濾器上以方便)剪切,然后粘貼到新工作表。 我希望它也刪除我從中剪切的空行。 下面的代碼只復制不刪除。

Sub filtertest()
Dim LastRow As Long

Sheets("Sheet1").Cells.Clear
Sheets("Sheet2").Activate

'Find the last row
LastRow = Range("A1").CurrentRegion.Rows.Count

'Select Table
Range("A1:K" & LastRow).Select

'Filter table
Selection.AutoFilter Field:=1, Criteria1:="51192"

'Copy/Paste
Selection.Copy
Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues

'Turn off autofilter
Selection.Autofilter

End Sub

我還嘗試將一些其他代碼組合在一起以將它們組合在一起。 但是,我不斷收到有關對象的錯誤。 不確定是因為“sub button_click()”還是我所說的我是新手。 任何幫助表示贊賞。 謝謝!

Sub Button1_Click()

Application.ScreenUpdating = False
Columns(1).AutoFilter 1, "51192"
With Range("a1", Range("i" & Rows.Count).End(3))
    .Copy FalsePositives.Cells(Rows.Count, 1).End(3).Offset(1)
    .EntireRow.Delete
End With
Columns(1).AutoFilter
Application.ScreenUpdating = True

End Sub

復制並粘貼值,然后返回並刪除原始文件,跳過標題。

Sub filtertest()
    Dim LastRow As Long

    Worksheets("Sheet1").Cells.Clear

    With Worksheets("Sheet2")

        'Find the last row
        LastRow = .Range("A1").CurrentRegion.Rows.Count

        'Filter table
        .Range("A1:K" & LastRow).AutoFilter Field:=1, Criteria1:="51192"


        'Copy/Paste
        .Range("A1:K" & LastRow).SpecialCells(xlCellTypeVisible).Copy
        Worksheets("Sheet1").Range("A1").PasteSpecial xlPasteValues

        'remove originals
        .Range("A1:K" & LastRow).Offset(1, 0).EntireRow.Delete

        'Turn off autofilter
        .AutoFilterMode = False
    End With
End Sub

我是論壇的新手。 我向大家打招呼。 我找到了您的過濾器並根據特定需要對其進行了修改。 我所做的是創建一個名為 AUXILIAR 的工作表,以復制應用的過濾器。 標准是ALTA這個詞。 我的問題如下。 每次放ALTA這個詞,文檔就滯后; 也就是說,它不鎖定,但寫ALTA這個詞需要時間。

我留下修改后的代碼,以便您可以閱讀它並幫助我找出為什么它滯后和變慢。

謝謝你們。

代碼

Sub FiltroAvanzado()
 
'Nombramos las variables
 Dim UltimaFila As Long
 Dim UltimaFilaAuxiliar As Long
 
 
 With Worksheets("TRAFICO")

        'Encuentra la ultima fila
        UltimaFila = .Range("A3").CurrentRegion.Rows.Count

        'Filtra Tabla
        .Range("A2:I" & UltimaFila).AutoFilter Field:=9, Criteria1:="ALTA"
        
        
       
        
        'Copia/Pega
        .Range("A3:I" & UltimaFila).SpecialCells(xlCellTypeVisible).Copy
        
         UltimaFilaAuxiliar = Sheets("AUXILIAR").Columns("A").Find("*", _
         searchorder:=xlByRows, searchdirection:=xlPrevious).Row
         Worksheets("AUXILIAR").Range("A" & UltimaFilaAuxiliar + 1).PasteSpecial xlPasteValues

        'Remueve los valores originales
        .Range("A2:I" & UltimaFila).Offset(1, 0).EntireRow.Delete

        'Apaga el Auto Filtro
        .AutoFilterMode = False
    End With


End Sub

我發現了這個小論壇,我真的很喜歡它。 我能和你一起學習。 使用你的方法,但根據我的需要修改它。 我只有一個問題,我不知道如何解決。

我有 2 張工作表,一張是數據,另一張是我復制舊數據的地方,我保存了它。 我用ALTA這個詞過濾。

我的問題是,當我寫 ALTA 這個詞時,excel 需要時間,它不會鎖定,它很慢或滯后。 我留下代碼讓他們理解並告訴我怎么做,這樣當我寫ALTA這個詞時,excel就不會滯后。

我還想告訴你,我把代碼放在一個插件中,並在功能區上添加了一個按鈕,以便它在我需要的時候執行代碼。

你好。

Sub FiltroAvanzado()

Dim UltimaFila As Long Dim UltimaFilaAuxiliar As Long

'Esta instruccion limpia la hora a donde se enviaran los datos
'desactivamos la intruccion para otra ocacion
'Worksheets("AUXILIAR").Cells.Clear

With Worksheets("TRAFICO")

    'Encuentra la ultima fila
    UltimaFila = .Range("A3").CurrentRegion.Rows.Count

    'Filtra Tabla
    .Range("A2:I400" & UltimaFila).AutoFilter Field:=9, Criteria1:="ALTA"
    
    
   
    
    'Copia/Pega
    .Range("A3:I" & UltimaFila).SpecialCells(xlCellTypeVisible).Copy
    
     UltimaFilaAuxiliar = Sheets("AUXILIAR").Columns("A").Find("*", _
     searchorder:=xlByRows, searchdirection:=xlPrevious).Row
     Worksheets("AUXILIAR").Range("A" & UltimaFilaAuxiliar + 1).PasteSpecial xlPasteValues

    'Remueve los valores originales
    .Range("A2:I" & UltimaFila).Offset(1, 0).EntireRow.Delete

    'Apaga el Auto Filtro
    .AutoFilterMode = False
End With

結束子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM