|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
支持同材料名称而多材料规格
Sub test()
Dim d As Object, ar, br, cr(), dr, i&, j&, m&, n&
Set d = CreateObject("scripting.dictionary")
ar = [A1].CurrentRegion
d("项目") = ",材料编号,材料名称,材料规格"
For i = 2 To UBound(ar, 2)
If ar(2, i) <> "" Then
If InStr(d("项目") & ",", "," & ar(5, i) & ",") = 0 Then d("项目") = d("项目") & "," & ar(5, i)
If Not d.exists(ar(2, i) & "," & ar(3, i) & "," & ar(4, i)) Then
d(ar(2, i) & "," & ar(3, i) & "," & ar(4, i)) = ar(5, i) & "," & ar(6, i)
Else
d(ar(2, i) & "," & ar(3, i) & "," & ar(4, i)) = d(ar(2, i) & "," & ar(3, i) & "," & ar(4, i)) & ":" & ar(5, i) & "," & ar(6, i)
End If
End If
Next i
n = 1: m = UBound(ar)
br = Split(d("项目"), ","): ar = d.keys
ReDim cr(1 To UBound(br), 1 To d.Count)
For i = 1 To UBound(br)
cr(i, 1) = br(i)
If i > 3 Then d(br(i)) = i
Next i
For i = LBound(ar) To UBound(ar)
If ar(i) <> "项目" Then
n = n + 1
br = Split(ar(i), ",")
For j = LBound(br) To UBound(br)
cr(j + 1, n) = br(j)
Next j
br = Split(d(ar(i)), ":")
For j = LBound(br) To UBound(br)
dr = Split(br(j), ",")
cr(d(dr(0)), n) = dr(1)
Next j
End If
Next i
Range("A" & m + 2).Resize(UBound(cr), UBound(cr, 2)) = cr
Set d = Nothing
End Sub
|
评分
-
1
查看全部评分
-
|