Excel精英培训网

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

分类求和但不要字典法

[复制链接]
发表于 2022-5-6 08:11 | 显示全部楼层 |阅读模式
本帖最后由 ck03w11 于 2022-5-6 08:21 编辑

请各位老师看看,按车间统计女员工人数,分类求和但不要字典法如何实现???

分类求和1.rar

30.23 KB, 下载次数: 5

发表于 2022-5-6 09:54 | 显示全部楼层
Sub test()
Dim arr
Dim i As Integer
Dim j As Integer
Dim brr(1 To 100)
Dim crr(1 To 100)
arr = Range("f3", Range("f65536").End(xlUp))
Rem 求不重复车间名
For i = 1 To UBound(arr)
    For j = 1 To UBound(brr)
        If brr(j) = arr(i, 1) Then
            GoTo 100
        End If
    Next
   n = n + 1
   brr(n) = arr(i, 1)
100
Next
Rem 求不重复个数
For i = 1 To UBound(brr)
    For j = 1 To UBound(arr)
        If brr(i) = arr(j, 1) Then
            k = k + 1
        End If
    Next
    m = m + 1
    crr(m) = k
    k = 0
Next
Range("l3").Resize(UBound(brr)) = Application.Transpose(brr)
Range("m3").Resize(n) = Application.Transpose(crr)
End Sub


回复

使用道具 举报

发表于 2022-5-6 10:22 | 显示全部楼层
  1. Sub marco()
  2. Set Rng = Cells(Cells.Rows.Count, "F").End(xlUp)
  3. ReDim arr(1 To Rng.Row) As String
  4. ReDim brr(1 To Rng.Row) As Long

  5. que = 1
  6. arr(que) = Cells(3, "F") & "|" & Cells(3, "I")
  7. For i = 3 To Rng.Row

  8. For q = 1 To que
  9.     If arr(q) = Cells(i, "F") & "|" & Cells(i, "I") Then
  10.     brr(q) = brr(q) + 1
  11.     flag = True
  12.     Exit For
  13.     End If
  14. Next

  15. If flag = False Then
  16.     que = que + 1
  17.     arr(que) = Cells(i, "F") & "|" & Cells(i, "I")
  18.     brr(que) = 1
  19. End If

  20. flag = False
  21. Next

  22. For i = 1 To que
  23. Range("AC1").Offset(i, 0) = Split(arr(i), "|")(0)
  24. Range("AC1").Offset(i, 1) = Split(arr(i), "|")(1)
  25. Range("AC1").Offset(i, 2) = brr(i)
  26. Next
  27. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2022-5-6 11:01 | 显示全部楼层
谢谢各位帮助,调试成功!谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-16 13:08 , Processed in 0.349193 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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