需求:月末盘点的时候,需要获取货品最后的进货单价,采用字典确定唯一性是比较简单的方法。

数据源有2万多行

盘点表有多行多列

第一步:处理数据源数据,将品名作为关键字,最后一批次的单价作为条目写入字典。

'字典后期绑定

Set d = CreateObject("scripting.dictionary")

arr = Sheets("数据").Range("A1").CurrentRegion

For i = 2 To UBound(arr)

'd.Add arr(i, 1), arr(i, 2) '将第一个单价写入字典

d(arr(i, 1)) = arr(i, 2) '将最后一个单价写入字典

Next i

第二步:通过观察上面的盘点表结构,每8列出现一次品名和单价,利用循环解决。

For i = 5 To 100

For j = 2 To 56 Step 8

Set 品名 = Cells(i, j)

Set 单价 = Cells(i, j + 3)

If d.exists(品名.Value) And 单价 <> d(品名.Value) Then

单价 = d(品名.Value)

单价.Font.Color = vbRed

End If

Next j

Next i

处理结果如下图:更新单价,并用标记为红色。

代码执行效果