|
前提是你懂字典的用法,不然是不太容易明白的。
- Sub aaa()
- Dim arr, brr, crr(1 To 1000, 1 To 2), i&, j&, d As Object, r&
- Set d = CreateObject("scripting.dictionary") '字典
- arr = Sheets(1).[a1].CurrentRegion '将BOM表数据装入数组
- brr = Sheets(2).[a1].CurrentRegion '将产品需求数量表数据装入数组
- For i = 2 To UBound(brr)
- For j = 2 To UBound(arr)
- If arr(j, 1) = brr(i, 1) Then '产品代号一致时
- If Not d.exists(arr(j, 3)) Then '如果字典内没有此数据时
- r = r + 1 '结果数组内行数加1
- d(arr(j, 3)) = r '将产品代号所在的数组行编号装入字典
- crr(r, 1) = arr(j, 3) '将牌号规格装入结果数组相应行的第一列
- End If
- crr(d(arr(j, 3)), 2) = crr(d(arr(j, 3)), 2) + brr(i, 2) * arr(j, 4) '将需求数量装入结果数组产品代号对应行的第二列
- End If
- Next j
- Next i
- Sheets(3).[b2].Resize(r, 2) = crr '输入至单元格区域
- End Sub
复制代码 |
|