Excel精英培训网

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

[已解决]VBA逐行计数及统计重复次数

[复制链接]
发表于 2022-6-16 11:08 | 显示全部楼层 |阅读模式
1.根据表头(AB2---AM2)名称
匹配M列数据,当(AB2---AM2)名称与M列数则在当行填入“1”,空值进填“0”
2.统计(AB-AM)重复出现的次数
将结果在AO更输出
数据比较多,大概有13W多条数据,希望能用数组来实现
搜狗截图20220616110047.png

最佳答案
2022-6-16 12:50
  1. Sub dome()
  2. Dim arr(), brr, crr, i, j
  3. brr = Sheet1.Range("M3:M255")
  4. crr = Sheet1.Range("AB2:AM2")
  5. ReDim arr(1 To UBound(brr), 1 To UBound(crr, 2))
  6. For i = 1 To UBound(brr)
  7.     For j = 1 To UBound(crr, 2)
  8.         If brr(i, 1) = crr(1, j) Then
  9.             arr(i, j) = 1
  10.         Else
  11.             arr(i, j) = 0
  12.         End If
  13.     Next
  14. Next i
  15. Sheet1.Range("ab3").Resize(UBound(brr), UBound(crr, 2)) = arr
  16. Sheet1.Range("ap2") = "=SUM(OFFSET(AB:AB,,ROW(A1)-1))"
  17. Sheet1.Range("ap2:ap13").FillDown


  18. End Sub
复制代码


统计次数.zip

35.01 KB, 下载次数: 10

发表于 2022-6-16 11:35 | 显示全部楼层
不好意思,看不太懂,可否請您舉例說明詳細,謝謝
回复

使用道具 举报

 楼主| 发表于 2022-6-16 11:57 | 显示全部楼层
sam-wang 发表于 2022-6-16 11:35
不好意思,看不太懂,可否請您舉例說明詳細,謝謝

例:                                      AB2:二倒尾数                  AH2:优化-裂痕
M3,的值为:二倒尾数           AB3单元格值填1                 AH3单元格值填0
M4,的值为:二倒尾数         AB4单元格值填1                 AH3单元格值填0
M5:的值为:优化-裂痕          AB5单元格值填0                AH3单元格值填1

以此类推,第二行为表头
从第二行表头的名称匹配M3列以下出来对应的内容,进行计数,
回复

使用道具 举报

 楼主| 发表于 2022-6-16 12:00 | 显示全部楼层
sam-wang 发表于 2022-6-16 11:35
不好意思,看不太懂,可否請您舉例說明詳細,謝謝

老师您好,帮忙看下,日期取值结果出错
搜狗截图20220616115716.png 搜狗截图20220616115732.png

回复

使用道具 举报

发表于 2022-6-16 12:50 | 显示全部楼层    本楼为最佳答案   
  1. Sub dome()
  2. Dim arr(), brr, crr, i, j
  3. brr = Sheet1.Range("M3:M255")
  4. crr = Sheet1.Range("AB2:AM2")
  5. ReDim arr(1 To UBound(brr), 1 To UBound(crr, 2))
  6. For i = 1 To UBound(brr)
  7.     For j = 1 To UBound(crr, 2)
  8.         If brr(i, 1) = crr(1, j) Then
  9.             arr(i, j) = 1
  10.         Else
  11.             arr(i, j) = 0
  12.         End If
  13.     Next
  14. Next i
  15. Sheet1.Range("ab3").Resize(UBound(brr), UBound(crr, 2)) = arr
  16. Sheet1.Range("ap2") = "=SUM(OFFSET(AB:AB,,ROW(A1)-1))"
  17. Sheet1.Range("ap2:ap13").FillDown


  18. End Sub
复制代码


1655354894734.jpg

demo.zip

33.52 KB, 下载次数: 12

评分

参与人数 1学分 +2 收起 理由
楚雪飞扬 + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-6-16 12:56 | 显示全部楼层
本帖最后由 楚雪飞扬 于 2022-6-16 13:07 编辑

感谢您 的帮忙
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 12:56 , Processed in 0.547215 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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