Excel精英培训网

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

[已解决]帮忙修改代码,获取使用行数

[复制链接]
发表于 2021-10-29 11:12 | 显示全部楼层 |阅读模式
本帖最后由 楚雪飞扬 于 2021-10-29 11:15 编辑

帮忙修改代码,获取使用行数从数据源(表一)A列(机台),算出对应机台的下机时间行数
目前问题,下机时间计算行数时,结果出错!
例:BETPJ-023 下机时间:29

最佳答案
2021-10-29 14:16
楚雪飞扬 发表于 2021-10-29 13:39
感谢老师的帮忙,可能是我没有描述清楚,表二(机台RUN数)B列机台型号,需要从表一(数据源)铜抛机台自 ...

Sub demo()
   Set D = CreateObject("Scripting.Dictionary")
   a = Sheet1.UsedRange
   For I = 2 To UBound(a): D(a(I, 1)) = D(a(I, 1)) + 1: Next
   For I = 0 To D.Count - 1
      D(D.keys()(I)) = Array(I + 1, D.keys()(I), D.items()(I))
   Next
   Sheet2.UsedRange.Offset(1).ClearContents
   [a2].Resize(D.Count, 3) = Application.Rept(D.items, 1)
End Sub


搜狗截图20211029111158.png
搜狗截图20211029111514.png

铜抛run数统计.rar

31.29 KB, 下载次数: 5

发表于 2021-10-29 11:31 | 显示全部楼层
  1. Sub 行数()
  2. Dim ARR, BRR(), I As Integer, K As Integer, D, CRR, C
  3. ARR = Sheets("数据源").Range("A1").CurrentRegion
  4. I = UBound(ARR)
  5. CRR = Range("B2:B" & Range("B2").End(xlDown).Row)
  6. ReDim BRR(1 To UBound(CRR))
  7. For K = 1 To UBound(CRR)
  8. L = 1
  9. For D = 2 To I
  10.   If ARR(D, 1) = CRR(K, 1) Then
  11.     BRR(K) = L
  12.     L = L + 1
  13.     End If
  14.     Next
  15. Next
  16. Range("C2").Resize(UBound(CRR), 1) = Application.Transpose(BRR)


  17. End Sub
复制代码

看下是不是这个意思

铜抛run数统计.rar

32.38 KB, 下载次数: 4

回复

使用道具 举报

发表于 2021-10-29 11:31 | 显示全部楼层
祝順心,南無阿彌陀佛!

demo.rar

33.6 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2021-10-29 13:39 | 显示全部楼层
cutecpu 发表于 2021-10-29 11:31
祝順心,南無阿彌陀佛!

感谢老师的帮忙,可能是我没有描述清楚,表二(机台RUN数)B列机台型号,需要从表一(数据源)铜抛机台自动获取型号!
回复

使用道具 举报

 楼主| 发表于 2021-10-29 13:45 | 显示全部楼层

感谢老师的帮忙,可能是我没有描述清楚,表二(机台RUN数)B列机台型号,需要从表一(数据源)铜抛机台自动获取型号!
回复

使用道具 举报

发表于 2021-10-29 14:07 | 显示全部楼层
楚雪飞扬 发表于 2021-10-29 13:45
感谢老师的帮忙,可能是我没有描述清楚,表二(机台RUN数)B列机台型号,需要从表一(数据源)铜抛机台自 ...
  1. Sub 行数()
  2. Dim ARR, BRR(), I As Integer, K As Integer, D, C, DIC
  3. Set D = CreateObject("SCRIPTING.DICTIONARY")
  4. ARR = Sheets("数据源").Range("A2").CurrentRegion
  5. ReDim BRR(1 To 1000, 1 To 3)
  6. For K = 2 To UBound(ARR)
  7. If Not D.EXISTS(ARR(K, 1)) Then
  8. I = I + 1
  9. D(ARR(K, 1)) = I
  10.   BRR(I, 1) = I
  11.   BRR(I, 2) = ARR(K, 1)
  12.   BRR(I, 3) = 1
  13.    Else
  14.   BRR(D(ARR(K, 1)), 3) = BRR(D(ARR(K, 1)), 3) + 1
  15. End If
  16. Next
  17. Range("A2").Resize(I, 3) = BRR
  18. End Sub
复制代码
改了

铜抛run数统计.rar

32.5 KB, 下载次数: 3

回复

使用道具 举报

发表于 2021-10-29 14:16 | 显示全部楼层    本楼为最佳答案   
楚雪飞扬 发表于 2021-10-29 13:39
感谢老师的帮忙,可能是我没有描述清楚,表二(机台RUN数)B列机台型号,需要从表一(数据源)铜抛机台自 ...

Sub demo()
   Set D = CreateObject("Scripting.Dictionary")
   a = Sheet1.UsedRange
   For I = 2 To UBound(a): D(a(I, 1)) = D(a(I, 1)) + 1: Next
   For I = 0 To D.Count - 1
      D(D.keys()(I)) = Array(I + 1, D.keys()(I), D.items()(I))
   Next
   Sheet2.UsedRange.Offset(1).ClearContents
   [a2].Resize(D.Count, 3) = Application.Rept(D.items, 1)
End Sub


回复

使用道具 举报

发表于 2021-10-29 14:20 | 显示全部楼层
在想你没有标题。如果加上标题。可能会错开一行。有标题就改成FOR K = 3 TO 把原来的2改成三
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 20:08 , Processed in 0.257124 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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