需求:月末盘点的时候,需要获取货品最后的进货单价,采用字典确定唯一性是比较简单的方法。
数据源有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
处理结果如下图:更新单价,并用标记为红色。
代码执行效果
