工作中经常要删除EXCEL行或者列,要删除的数据量比较少的情况下,可以直接手动删除或者筛选后手动删除,要是数据量比较多的话就比较费手了,偷懒使人进步!下面通过删除EXCEL特定行来实例说明:
如图,要求删除每个仓差异都为0的数据,当数据量比较大,条件又比较复杂的情况下,手动就比较尴尬了.我们用两种VBA代码方法来实现:
方法一:
Sub 删除没有差异数据()
Dim i, j As Integer
Application.ScreenUpdating = False
j = Range("A65536").End(xlUp).Row
For i = j To 6 Step -1
If Range("H" & i) = 0 And Range("K" & i) = 0 And Range("N" & i) = 0 Then
Range("H" & i).Select
Selection.EntireRow.Delete Shift:=xlUp
End If
Next
Application.ScreenUpdating = True
End Sub
方法二:
Sub 删除没有差异数据数组方法()
Dim arr, brr(), i, j, k, z
k = Range("N65536").End(xlUp).Row
arr = Range("A6:N" & k)
ReDim brr(1 To UBound(arr, 1), 1 To UBound(arr, 2))
For i = 1 To UBound(arr)
If arr(i, 8) <> 0 Or arr(i, 11) <> 0 Or arr(i, 14) <> 0 Then
j = j + 1
For z = 1 To 14
brr(j, z) = arr(i, z)
Next
End If
Next
Range("A6:N" & k).ClearContents
Range("A6").Resize(j, 14) = brr
End Sub
结果如下图:
第一种方法是平时比较常用的,但是效率比较低,要特别注意,最好倒着删行,这个大家可以想想为什么?然后在下面留言,
第二种方法要求VBA基础稍微好点,效率也比较高,也有要注意的地方,比如0开头的文本数字写入到单元格后的问题等.
因为没有什么流量,好久没有写头条了,希望有需要的朋友看过留言,也算有点意义.