今天遇到的问题,应该是财务人员经常会遇到的问题。
问题如下:
此数据,提供的时候就有2000行的数据,实际数据据说有数万行。
解决的思路如下:
运行的结果如下:
代码如下:
源代码(加代码解析)如下:
Sub 删除数值()
Dim nRow, arr
'读取f列的最后一个非空单元格
nRow = Range("f" & Rows.Count).End(3).Row
'把F与H列的数据放在数组
arr = Range("f1:h" & nRow)
'转换数据格式
For i = 1 To UBound(arr)
arr(i, 1) = "'" & arr(i, 1)
Next i
'先读取退订金的数据
For i = UBound(arr) To 1 Step -1
'判断是否为非空
If arr(i, 2) <> "" Then
'先读取收订金的数据
For j = UBound(arr) - 1 To 1 Step -1
'数据比较
If arr(i, 1) = arr(j, 1) And arr(i, 2) = arr(j, 3) Then
'行删除
Rows(i).Delete
Rows(j).Delete
End If
Next j
End
IfNext i
End Sub
本例在写本文章的时候,突然有一个更好的方案:就是读取G列的最后一个非空单元格。然后把数据装入相应的数组。这样可能会减少判断退订金为非空单元格的次数。大家觉得呢?
閱讀更多 浮雲Excel分享 的文章