VBA 代码求助 要求,当同一天(C列数据)同一个品番(A列数据)有多次入库时,合并入库数量(D列数据)
CODE入库时间入库数量C0000120120803500C0000120120803300C0000120120805200C00004201208101000C000...
CODE 入库时间 入库数量
C00001 20120803 500
C00001 20120803 300
C00001 20120805 200
C00004 20120810 1000
C00004 20120810 1200
要求运行宏后的效果如下:
C00001 20120803 800
C00001 20120805 200
C00004 20120810 2200
谢谢各位~ 展开
C00001 20120803 500
C00001 20120803 300
C00001 20120805 200
C00004 20120810 1000
C00004 20120810 1200
要求运行宏后的效果如下:
C00001 20120803 800
C00001 20120805 200
C00004 20120810 2200
谢谢各位~ 展开
展开全部
这种问题,用字典最为合适了,B列是什么?
C列的日期是什么格式?是日期格式的数据吗?
代码如下:
Sub test()
Dim arr, brr(), x&, i&
Dim dic1 As Object
Set dic1 = CreateObject("scripting.dictionary")
With Sheets("sheet1")
arr = .Range("A1:D" & .Range("A65536").End(xlUp).Row)
End With
For x = 2 To UBound(arr)
str1 = arr(x, 1) & "|" & arr(x, 3)
If Not dic1.exists(str1) Then
i = i + 1
dic1(str1) = i
ReDim Preserve brr(1 To 4, 0 To i)
For y = 1 To 3
brr(y, i) = arr(x, y)
Next y
End If
brr(4, dic1(str1)) = brr(4, dic1(str1)) + arr(x, 4)
Next x
For y = 1 To 4
brr(y, 0) = arr(1, y)
Next y
With Sheets("sheet2")
.Range("A1").Resize(UBound(brr, 2) + 1, UBound(brr)) = Application.Transpose(brr)
End With
End Sub
C列的日期是什么格式?是日期格式的数据吗?
代码如下:
Sub test()
Dim arr, brr(), x&, i&
Dim dic1 As Object
Set dic1 = CreateObject("scripting.dictionary")
With Sheets("sheet1")
arr = .Range("A1:D" & .Range("A65536").End(xlUp).Row)
End With
For x = 2 To UBound(arr)
str1 = arr(x, 1) & "|" & arr(x, 3)
If Not dic1.exists(str1) Then
i = i + 1
dic1(str1) = i
ReDim Preserve brr(1 To 4, 0 To i)
For y = 1 To 3
brr(y, i) = arr(x, y)
Next y
End If
brr(4, dic1(str1)) = brr(4, dic1(str1)) + arr(x, 4)
Next x
For y = 1 To 4
brr(y, 0) = arr(1, y)
Next y
With Sheets("sheet2")
.Range("A1").Resize(UBound(brr, 2) + 1, UBound(brr)) = Application.Transpose(brr)
End With
End Sub
追问
B列数据是品名,C列日期的格式,就是我上面提问表示的。应该是数字格式吧?反正没有横杠或者是斜杠。
谢谢你的答案啊,我看看啊。不懂VBA,我需要慢慢看呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询