大家好,我是陈小虾,是一名自动化方向的IT民工。写博客是为了记录自己的学习过程,通过不断输出倒逼自己加速成长。但功能说明:由于水平有限,博客中难免会出现一些BUG,或者有更优方案恳请各位大佬不吝赐教!微信公众号:万能的Excel
功能说明:
1、根据每天的出库、入库记录,自动筛选出产品ID号
2、实时统计每个产品的库存状态
3、自动统计每个月产品总出库、入库数量
关注公众号:万能的Excel 并回复【进销表】获取源文件!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim d1 As Object, d2 As Object, arr, i As Integer, k, brr
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
Set d3 = CreateObject("scripting.dictionary")
If (12 < Target.Rows) And (1 < Target.Columns < 11) Then
arr = Range("c11").CurrentRegion
For i = 2 To UBound(arr)
If Len(arr(i, 3)) Then
If d1(arr(i, 3)) = "" Then '如果是否有数据
If arr(i, 5) = "入库" Then
d1(arr(i, 3)) = arr(i, 6) '如果该关键字第一次出现
Else
d2(arr(i, 3)) = arr(i, 6)
End If
d3(arr(i, 3)) = arr(i, 2)
Else '当该关键字出现了第二次以上
If arr(i, 5) = "入库" Then
d1(arr(i, 3)) = d1(arr(i, 3)) + arr(i, 6) '如果该关键字第一次出现
Else
d2(arr(i, 3)) = d2(arr(i, 3)) + arr(i, 6)
End If
End If
End If
Next i
f = 12
For Each k In d1.keys '遍历每一个关键字
Cells(f, "l") = k
Cells(f, "m") = d3(k)
Cells(f, "n") = d1(k)
Cells(f, "o") = d2(k)
Cells(f, "p") = d1(k) - d2(k)
f = f + 1
Next k
f = 0
End If
End Sub