Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2692|回复: 6

[已解决]如何用VBA来实现筛选汇总的效果

[复制链接]
发表于 2013-7-21 15:41 | 显示全部楼层 |阅读模式
本帖最后由 dasly123 于 2013-7-21 15:42 编辑

因不确定A列数据有多少行,想用VBA 根据A列的有效数据来筛选汇总 “材料”所对应的总重量。。 (参数在“信息表”中)
  


求助.rar (116.23 KB, 下载次数: 11)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-21 16:03 | 显示全部楼层
你就说你要什么结果,不一定按你说的步骤来.
回复

使用道具 举报

发表于 2013-7-21 16:34 | 显示全部楼层    本楼为最佳答案   
请测试附件……

求助.zip

150.37 KB, 下载次数: 23

回复

使用道具 举报

 楼主| 发表于 2013-7-21 19:34 | 显示全部楼层
非常感谢 .... 数据全对... 只是有几个地方没懂.    可以帮我解译下吗??
回复

使用道具 举报

 楼主| 发表于 2013-7-21 19:35 | 显示全部楼层
本帖最后由 dasly123 于 2013-7-21 19:37 编辑
sliang28 发表于 2013-7-21 16:34
请测试附件……

Private Sub CommandButton1_Click()
    Dim arr, brr
    Dim d, d1, d2
    Dim i, j
        arr = Sheets("信息表").UsedRange
        brr = Sheets("统计求和").Range("A4:B" & Range("A65536").End(3).Row)
        Set d = CreateObject("Scripting.dictionary")
        Set d1 = CreateObject("Scripting.dictionary")
        Set d2 = CreateObject("Scripting.dictionary")
            For i = 1 To UBound(arr)
                d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 9)  
                d1(arr(i, 1)) = d1(arr(i, 1)) + arr(i, 10)  
            Next
        ReDim crr(1 To UBound(brr), 1 To 3)
            For i = 1 To UBound(brr)
                m = m + 1
                crr(m, 3) = d(brr(i, 1))
                crr(m, 2) = d1(brr(i, 1))  
                crr(m, 1) = crr(m, 3) * brr(i, 2)  
            Next
        For i = 1 To m
            d2(crr(i, 2)) = d2(crr(i, 2)) + crr(i, 1)  
        Next
        With Sheets("统计求和")
            .Range("D4:F" & UBound(brr)).ClearContents
            .Range("H5:I" & UBound(brr)).ClearContents
            .Range("D4").Resize(m, 3) = crr
            .Range("H5").Resize(d2.Count, 1) = Application.WorksheetFunction.Transpose(d2.keys)
            .Range("I5").Resize(d2.Count, 1) = Application.WorksheetFunction.Transpose(d2.items)
        End With
End Sub

d2(crr(i, 2)) = d2(crr(i, 2)) + crr(i, 1)      +crr(i+1)表示什么?
.Range("H5").Resize(d2.Count, 1) = Application.WorksheetFunction.Transpose(d2.keys)  这两句  何解??
.Range("I5").Resize(d2.Count, 1) = Application.WorksheetFunction.Transpose(d2.items) 这两句  何解??




回复

使用道具 举报

发表于 2013-7-21 21:37 | 显示全部楼层
dasly123 发表于 2013-7-21 19:35
Private Sub CommandButton1_Click()
    Dim arr, brr
    Dim d, d1, d2

1.字典赋值.
2.字典key赋给单元格
3.字典item赋给单元格
回复

使用道具 举报

 楼主| 发表于 2013-7-21 22:13 | 显示全部楼层
看懂了..  太感谢了....    好厉害啊... 什么时候才能学得像您这么好!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-30 23:52 , Processed in 0.783124 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表