VBA分类汇总时需要具备产品名称和型号两个条件,且要将数量和总金额都做汇总,如何编写代砗
答案:2 悬赏:30 手机版
解决时间 2021-02-01 15:52
- 提问者网友:暗中人
- 2021-01-31 20:23
VBA分类汇总时需要具备产品名称和型号两个条件,且要将数量和总金额都做汇总,如何编写代砗
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-01-31 20:34
方法多样,你没有具体的案例不好说。
假设,源数据在sheet1,而汇总于sheet2。又假设sheet1的A列为产品名称列,B列为型号列,C列为数量列,D列为单价列,E列为金额列。
第1步、首先要获取sheet1中的产品名称和型号信息于sheet2中,假设分别为A、B列,
C列为数量列,D列为金额列。
获取的方法可以使用循环比较的方法,也可以使用复制后删除重复项的方法。
前者代码参考如下:
Range("a2:a" & [a65536].End(3).Row).ClearContents
With Sheet1
For i = 2 To .[a65536].End(3).Row
If Application.CountIfs([a:a], .Cells(i, 1), [b:b], .Cells(i, 2)) = 0 Then
[a65536].End(3).Offset(1) = .Cells(i, 1)
[a65536].End(3).Offset(, 1) = .Cells(i, 2)
End If
Next
End With 后者代码参考如下:
Range("a2:a" & [a65536].End(3).Row).ClearContents
Sheet1.Range("A2:B" & Sheet1.[a65536].End(3).Row).Copy Sheet2.[a2]
Sheet2.Range("$A$1:$B$" & [a65536].End(3).Row).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes 两者代码比较,后者较为适宜(简短、运行较快)
第二步,汇总数据
调用sumifs,使用循环逐个汇总的方式来完成,会简洁一点,代码参考如下:
With Sheet1
For i = 2 To [a65536].End(3).Row
Cells(i, 3) = Application.SumIfs(.[c:c], .[a:a], Cells(i, 1), .[b:b], Cells(i, 2))
Cells(i, 4) = Application.SumIfs(.[e:e], .[a:a], Cells(i, 1), .[b:b], Cells(i, 2))
Next
End With
追问朋友,我做了一个小仓库管理程,表格太多、窗体太多,能帮我精简下把查询结果放一个表格,查洵其它项时删除前一次的结果可以吗,
假设,源数据在sheet1,而汇总于sheet2。又假设sheet1的A列为产品名称列,B列为型号列,C列为数量列,D列为单价列,E列为金额列。
第1步、首先要获取sheet1中的产品名称和型号信息于sheet2中,假设分别为A、B列,
C列为数量列,D列为金额列。
获取的方法可以使用循环比较的方法,也可以使用复制后删除重复项的方法。
前者代码参考如下:
Range("a2:a" & [a65536].End(3).Row).ClearContents
With Sheet1
For i = 2 To .[a65536].End(3).Row
If Application.CountIfs([a:a], .Cells(i, 1), [b:b], .Cells(i, 2)) = 0 Then
[a65536].End(3).Offset(1) = .Cells(i, 1)
[a65536].End(3).Offset(, 1) = .Cells(i, 2)
End If
Next
End With 后者代码参考如下:
Range("a2:a" & [a65536].End(3).Row).ClearContents
Sheet1.Range("A2:B" & Sheet1.[a65536].End(3).Row).Copy Sheet2.[a2]
Sheet2.Range("$A$1:$B$" & [a65536].End(3).Row).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes 两者代码比较,后者较为适宜(简短、运行较快)
第二步,汇总数据
调用sumifs,使用循环逐个汇总的方式来完成,会简洁一点,代码参考如下:
With Sheet1
For i = 2 To [a65536].End(3).Row
Cells(i, 3) = Application.SumIfs(.[c:c], .[a:a], Cells(i, 1), .[b:b], Cells(i, 2))
Cells(i, 4) = Application.SumIfs(.[e:e], .[a:a], Cells(i, 1), .[b:b], Cells(i, 2))
Next
End With
全部回答
- 1楼网友:英雄的欲望
- 2021-01-31 22:14
录数透宏
或
学习字典追问字典听说过,感觉太难。数透宏没听过
或
学习字典追问字典听说过,感觉太难。数透宏没听过
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯