+ -
当前位置:首页 → 问答吧 → 如何用VBA将Excel中的数据分类加总并显示

如何用VBA将Excel中的数据分类加总并显示

时间:2011-08-08

来源:互联网

请教,如何将附件中的数据按Picklist#, Item Number, Warehouse, Location,加总Required Qty,并将结果显示在下一行,增加的这一行只要数量单位。处理前后的结果见附件中的Before,After,谢谢。

[ 本帖最后由 Yong.Xu 于 2011-8-8 10:20 编辑 ]

附件

Picklist_output3.zip(6.72 KB)

2011-8-8 10:19, 下载次数: 8

作者: Yong.Xu   发布时间: 2011-08-08

复制内容到剪贴板
代码:
Sub yyy()
s = Range("a1:h" & [a65536].End(3).Row)
For i = 1 To UBound(s) - 1
   If s(i, 3) = s(i + 1, 3) Then
      k = s(i, 6) + s(i + 1, 6): i = i + 1
      Do
   If s(i, 3) = s(i + 1, 3) Then
         k = k + s(i + 1, 6): i = i + 1
   Else
         i = i + 1: Rows(i).Insert Shift:=xlDown
         Cells(i, 6) = k: Cells(i, 7) = s(i - 1, 7)
         GoTo p0:
   End If
      Loop
   End If
p0:
Next
End Sub

作者: 白云2011   发布时间: 2011-08-08

楼上的很强大,程序相当简洁。
请问要是有些Item Number的记录没有相连如何处理?具体数据请看附件黄色部分,谢了。

附件

Picklist_output4.zip(9.88 KB)

2011-8-8 13:58, 下载次数: 5

作者: Yong.Xu   发布时间: 2011-08-08

复制内容到剪贴板
代码:
Sub aa()
Dim s, i%, j%, k%
s = Range("a1:h" & [a65536].End(3).Row)
For i = 1 To UBound(s) - 1
   If s(i, 3) = s(i + 1, 3) Then
      k = s(i, 6) + s(i + 1, 6): i = i + 1
      Do
   If s(i, 3) = s(i + 1, 3) Then
         k = k + s(i + 1, 6): i = i + 1
   Else
         i = i + 1 + j: Rows(i).Insert Shift:=xlDown
         Cells(i, 6) = k: Cells(i, 7) = s(i - 1, 7)
         j = j + 1: GoTo p0:
   End If
      Loop
   End If
p0:
Next
End Sub
复制内容到剪贴板
代码:
Sub bb()
For i = 1 To UBound(s) - 1
   If Cells(i, 3) = Cells(i + 1, 3) Then
      k = Cells(i, 6) + Cells(i + 1, 6): i = i + 1
      Do
   If Cells(i, 3) = Cells(i + 1, 3) Then
         k = k + Cells(i + 1, 6): i = i + 1
   Else
         i = i + 1: Rows(i).Insert Shift:=xlDown
         Cells(i, 6) = k: Cells(i, 7) = Cells(i - 1, 7)
         GoTo p0:
   End If
      Loop
   End If
p0:
Next
End Sub

作者: 白云2011   发布时间: 2011-08-08