今天遇到的問題,應該是財務人員經常會遇到的問題。
問題如下:
此數據,提供的時候就有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分享 的文章