|
本帖最后由 月下布衣 于 2019-9-18 08:34 编辑
公司名和品类为条件,求完成进度计数(比如有两个淬炼,就显示淬炼2,),耗费体力值求和,请大神不吝指教,感谢。
################################################
经“weare2” 老师的帮助,目前已可以实现功能!非常感谢,贴出代码,感谢!附件见楼层
- Sub sss()
- Dim ar3()
- Set D = CreateObject("scripting.dictionary")
- Set d1 = CreateObject("scripting.dictionary")
- Set D2 = CreateObject("scripting.dictionary")
- ar = Range("a2:D" & Cells(Rows.Count, "d").End(3).Row)
- '数据源区域装入数组
- ar1 = Range("f3:g" & Cells(Rows.Count, "g").End(3).Row)
- '求解条件装入数组
- For i = 1 To UBound(ar)
- D(ar(i, 1) & ar(i, 2) & ar(i, 3)) = D(ar(i, 1) & ar(i, 2) & ar(i, 3)) + ar(i, 4)
- '按照客户+品类+进度 算耗费体力值
- d1(ar(i, 1) & ar(i, 2) & ar(i, 3)) = d1(ar(i, 1) & ar(i, 2) & ar(i, 3)) + 1
- '按照客户+品类+进度 计数
- Next
- For i = 1 To UBound(ar1)
- D2(ar1(i, 1) & ar1(i, 2)) = ""
- Next
- Debug.Print D2.KEYS
- '客户+品类 去重
- For Each rn In D2.KEYS
- ' 每一个在D2中的关键词
- For Each ds In D.KEYS
- '每一个在数据源中的关键词
- <font color="#ff0000"> If InStr(ds, rn) Then
- '如果条件D2的关键词在数据源中出现的话
- yd = Right(ds, Len(ds) - Len(rn)) & d1(ds) & "(" & D(ds) & ")" & yd
- '取值完成进度& 计数 & 耗费体力值
- End If</font>
复制代码
|
|