|

楼主 |
发表于 2025-1-29 18:42
|
显示全部楼层
学习了ykcbf1100大侠的代码,用字典嵌套也还是可以的。第一行和第一列没有写代码,想用的自己写。
- Sub test2()
- Set d = VBA.CreateObject("scripting.dictionary")
- arr = Sheets("sheet1").Range("a1").CurrentRegion
- brr = Sheets("sheet1").Range("r1").CurrentRegion
- crr = Sheets("结果").Range("a1").CurrentRegion
- With Sheets("sheet1")
- For i = 2 To UBound(arr)
- s = arr(i, 1)
- Set d(s) = VBA.CreateObject("scripting.dictionary")
- Next i
- For i = 2 To UBound(arr)
- s = arr(i, 1)
- For x = 2 To UBound(brr)
- ss = brr(x, 1)
- If x = UBound(brr) Then r1 = brr(UBound(brr), 2): r2 = 1000
- r1 = brr(x, 2): r2 = brr(x + 1, 2)
- If arr(i, 15) >= r1 And arr(i, 15) < r2 Then
- d(s)(ss) = d(s)(ss) + 1
- Exit For
- End If
- Next x
- Next i
- End With
- drr = d.keys
- lastrow = d.Count + 1
- For i = 2 To lastrow
- For j = 2 To UBound(brr)
- crr(i, j) = d(crr(i, 1))(crr(1, j))
- Next j
- Next i
- Sheets("结果").Range("a1").Resize(d.Count + 1, UBound(brr)) = crr
- End Sub
复制代码 |
|