Excel精英培训网

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

分类汇总的求助

[复制链接]
发表于 2023-2-14 18:57 | 显示全部楼层 |阅读模式
附件中有说明,求修改代码,谢谢了先!

工作簿188.rar

21.09 KB, 下载次数: 4

发表于 2023-2-15 10:21 | 显示全部楼层
工作簿188.rar (20.54 KB, 下载次数: 4)
回复

使用道具 举报

 楼主| 发表于 2023-2-15 14:47 | 显示全部楼层

谢谢,但是汇总的数量是错的。请帮忙再看下!
回复

使用道具 举报

 楼主| 发表于 2023-2-15 18:56 | 显示全部楼层

搞定了!如果把2列条件互换一下怎样改?我改了很久没成功,能否帮忙看下,谢谢了先!
回复

使用道具 举报

发表于 2023-2-15 22:50 | 显示全部楼层
是这样吗?
工作簿188-.rar (20.56 KB, 下载次数: 14)
回复

使用道具 举报

 楼主| 发表于 2023-2-16 13:11 | 显示全部楼层

谢谢您,解决了
回复

使用道具 举报

 楼主| 发表于 2023-2-17 19:42 | 显示全部楼层

老师,如果在数据最后一行的单元格进行汇总的代码怎样改?谢谢了先
回复

使用道具 举报

发表于 2023-2-18 16:48 | 显示全部楼层
zjdh大大範本
Dim arr, dic, i%
    Set dic = CreateObject("scripting.dictionary")
    Set dic1 = CreateObject("scripting.dictionary")
    s = 0
    p = 0
    With ActiveSheet
        arr = Sheets("表").Range("P2:X" & Sheets("表").Range("X65535").End(xlUp).Row)
        For i = 1 To UBound(arr)
            If dic.exists(arr(i, 9)) Then
                dic(arr(i, 9)) = dic(arr(i, 9)) + 1
                'dic1(arr(i, 1)) = dic1(arr(i, 9)) + arr(i, 1)
                dic1(arr(i, 9)) = dic1(arr(i, 9)) + arr(i, 1)
            Else
                dic(arr(i, 9)) = 1
                dic1(arr(i, 9)) = arr(i, 1)
            End If
            s = s + arr(i, 1)
            p = p + 1
        Next
        Sheets("匯總表").Range("C2:E5000").ClearContents
        Sheets("匯總表").[C2].Resize(dic.Count, 1) = Application.Transpose(dic.Keys)
        Sheets("匯總表").[D2].Resize(dic.Count, 1) = Application.Transpose(dic.Items)
        Sheets("匯總表").[E2].Resize(dic.Count, 1) = Application.Transpose(dic1.Items)
        Sheets("匯總表").Range("d" & dic.Count + 2) = p
        Sheets("匯總表").Range("e" & dic.Count + 2) = s
     End With

评分

参与人数 1学分 +2 收起 理由
cutecpu + 2

查看全部评分

回复

使用道具 举报

发表于 2023-2-20 21:07 | 显示全部楼层
只要一个字典也可以
Sub 汇总2()
  Dim r%, i%
  Dim arr, brr
  Dim d As Object
  Set d = CreateObject("scripting.dictionary")
  With Worksheets("表")
    r = .Cells(.Rows.Count, "p").End(xlUp).Row
    arr = .Range("p2:x" & r)
  End With
  For i = 1 To UBound(arr)
    xm = arr(i, 1)
    If Not d.exists(xm) Then
      ReDim brr(1 To 3)
      brr(1) = xm
    Else
      brr = d(xm)
    End If
    brr(2) = brr(2) + 1
    brr(3) = brr(3) + arr(i, 9)
    d(xm) = brr
  Next
  With Worksheets("汇总表")
    .Range("c2").Resize(d.Count, 3) = Application.Transpose(Application.Transpose(d.items))
  End With
End Sub

回复

使用道具 举报

发表于 2023-3-24 08:39 | 显示全部楼层

留下记号,谢谢大师
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 07:20 , Processed in 0.605291 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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