系统:Windows 7
软件:Excel 2010
问题
目前有一采购清单(A列),库存也有一堆物品(B列),现在需要采购库存中没有但在采购清单中的物品,其实就是C列=A列- B列,求两者的差集
清单
逻辑过程(字典方法)
- 定义两个字典(d1,d2),字典d1的键存放A列数据,字典d2的键存放B列数据
- 对字典d2的键进行循环,依次判断是否在字典d1中,若在,则移除字典d1中对应的键
- 将字典d1的键输出到C列
代码
Sub test()
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Set sht = ThisWorkbook.Worksheets("示例")
maxRowA = sht.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To maxRowA Step 1
x = sht.Cells(i, "A")
d1(x) = ""
Next i
maxRowB = sht.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To maxRowB Step 1
x = sht.Cells(i, "B")
d2(x) = ""
Next i
For Each ky In d2.Keys
If d1.Exists(ky) Then
d1.Remove (ky)
End If
Next
rowNum = 2
For Each ky In d1.Keys
sht.Cells(rowNum, "C") = ky
rowNum = rowNum + 1
Next
End Sub
代码截图
执行结果
部分代码解读
-
d1.Remove (ky)
移除字典中的键ky
以上为本次的学习内容,下回见
如发现有错误,欢迎留言指出
更多精彩,请关注微信公众号
扫描二维码,关注本公众号