|
发表于 2015-2-28 19:36
|
显示全部楼层
本楼为最佳答案
正确与否,不再修改- Sub Macro1()
- Dim arr, brr, lb, d, d2, d3, i&, j%, k%
- Set d = CreateObject("scripting.dictionary")
- Set d2 = CreateObject("scripting.dictionary")
- Set d3 = CreateObject("scripting.dictionary")
- arr = [a7:a25]
- brr = Range("a1").CurrentRegion
- w = Array(2, 5)
- For i = 1 To UBound(arr)
- d(arr(i, 1)) = d(arr(i, 1)) + 1
- Next
- d("A") = 58: d("V") = 55
- For i = 2 To UBound(brr)
- For j = 0 To 1
- x = Split(brr(i, w(j)), "")
- ReDim lb(1 To 50) '拆分类别放入数组
- n = 0: n2 = brr(i, w(j) + 1) '数量
- For k = 0 To UBound(x)
- n = n + 1
- lb(n) = x(k)
- z = Left(x(k), 1)
- d3(z) = d3(z) + d(x(k))
- Next
- For jj = 1 To n
- z = Left(lb(jj), 1)
- If d.exists(z) Then s = d(z) Else s = 53
- d2(lb(jj)) = d2(lb(jj)) + n2 * s / d3(z)
- Next
- Erase lb
- d3.RemoveAll
- Next
- Next
- For i = 1 To UBound(arr)
- arr(i, 1) = d2(arr(i, 1))
- Next
- Range("b7").Resize(UBound(arr)) = arr
- End Sub
复制代码 |
|