使用VBA排序和删除不同标签中的不同数据

时间:2018-06-21 20:43:44

标签: excel-vba vba excel

我正在使用宏将4个标签中的数据提取到一个标签中。当数据移出时,有几百行零试图删除。我遇到的主要问题是无法确定的是,每次拉动时,行数实际上都在变化,所以如果我在下面使用一行(如第二种情况下的1570:1570),则会丢失一些数据或删除一些约会。如果我确定并运行(如第一种情况),则循环将永远运行。我在下面使用了这两个代码,原因是为什么我不喜欢它们。感谢您的帮助(我是VBA btw的TOTAL新手)。

-这是场景1的循环时间(通常约为8K-10K行),而场景2如下:-这是场景2,它可以快速运行,但是删除有效数据或不删除所有数据带有0的行。如您所知,这是我录制宏的过程,就像我在excel中所做的一样。

Application.CutCopyMode = False 

Dim wbkX As Workbook
Dim wksX As Worksheet
Set wbkX = ActiveWorkbook
Set wksX = wbkX.Worksheets("Merge")
    lRow = wksX.UsedRange.Rows.Count 
    lCol = wksX.UsedRange.Columns.Count 

wksX.Range(Cells(1, 1), Cells(1, lCol)).AutoFilter Field:=1 

For x = 1 To lRow 'Loop's through every row from 1 to Last Row.  
    If wksX.Cells(x, 1).Value = 0 Then 
        wksX.Rows(x).Delete 
        x = x - 1 
    End If
Next x


Sub DeleteZeros()

' DeleteZeros Macro
ActiveSheet.Range("$A$1:$G$27997").AutoFilter Field:=1, Criteria1:="0"
Rows("1571:1571").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveSheet.Range("$A$1:$G$6277").AutoFilter Field:=1
End Sub

0 个答案:

没有答案