Excel VBA 根据单据号核销定金

今天遇到的问题,应该是财务人员经常会遇到的问题。

问题如下:

Excel VBA 根据单据号核销定金

此数据,提供的时候就有2000行的数据,实际数据据说有数万行。

解决的思路如下:

Excel VBA 根据单据号核销定金

运行的结果如下:

Excel VBA 根据单据号核销定金

代码如下:

Excel VBA 根据单据号核销定金

源代码(加代码解析)如下:

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

If

Next i

End Sub

本例在写本文章的时候,突然有一个更好的方案:就是读取G列的最后一个非空单元格。然后把数据装入相应的数组。这样可能会减少判断退订金为非空单元格的次数。大家觉得呢?


分享到:


相關文章: