|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
- Sub test()
- Dim r%, i%
- Dim arr, brr
- Dim d As Object
- Set d = CreateObject("scripting.dictionary")
- xm = [{"期初","入库","出库"}]
- With Worksheets("结存")
- rq1 = .Range("b1")
- rq2 = .Range("d1")
- End With
- For k = 1 To UBound(xm)
- With Worksheets(xm(k))
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- arr = .Range("a2:d" & r)
- For i = 1 To UBound(arr)
- If arr(i, 1) >= rq1 And arr(i, 1) <= rq2 Then
- If Not d.exists(arr(i, 2)) Then
- ReDim brr(1 To 6)
- brr(1) = arr(i, 2)
- brr(2) = arr(i, 3)
- Else
- brr = d(arr(i, 2))
- End If
- brr(k + 2) = brr(k + 2) + arr(i, 4)
- d(arr(i, 2)) = brr
- End If
- Next
- End With
- Next
- brr = Application.Transpose(Application.Transpose(d.items))
- ReDim crr(1 To UBound(brr, 2))
- crr(1) = "总计"
- For i = 1 To UBound(brr)
- brr(i, 6) = brr(i, 3) + brr(i, 4) - brr(i, 5)
- For j = 3 To UBound(brr, 2)
- crr(j) = crr(j) + brr(i, j)
- Next
- Next
- With Worksheets("结存")
- .UsedRange.Offset(3, 0).ClearContents
- .Range("a4").Resize(UBound(brr), UBound(brr, 2)) = brr
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- Range("a" & r + 1).Resize(1, UBound(crr)) = crr
- End With
- End Sub
复制代码 |
|