字典-求差集

微信公众号原文

系统:Windows 7
软件:Excel 2010

问题

目前有一采购清单(A列),库存也有一堆物品(B列),现在需要采购库存中没有但在采购清单中的物品,其实就是C列=A列- B列,求两者的差集

清单

1.png

逻辑过程(字典方法)

  1. 定义两个字典(d1,d2),字典d1的键存放A列数据,字典d2的键存放B列数据
  2. 对字典d2的键进行循环,依次判断是否在字典d1中,若在,则移除字典d1中对应的键
  3. 将字典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

代码截图

2.png

执行结果

3.png

部分代码解读

  1. d1.Remove (ky) 移除字典中的ky

以上为本次的学习内容,下回见

如发现有错误,欢迎留言指出


更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,373评论 11 349
  • 《那年花开月正圆》的首映礼上,汪远说孙俪扮演的周莹少奶奶,是一个给人安全感的人。的确,她聪慧机敏,有担当,又...
    江上雨寒舟里阅读 293评论 0 0
  • 大部分的分手都是可以挽回的,前提是你在正确的时候做了正确的事。 然而,你多半会选择在错误的时间、做错误的事:乞求对...
    理心空间丹凤阅读 2,386评论 31 41
  • 人性能达到的境界 1.一、需求层次理论 1.1.概念 1.1.1.马斯洛将人类的需求归纳为生理需求、安全需求、归属...
    MR张翔阅读 2,796评论 2 4
  • 五、游戏的习惯 如何实践游戏 以学习者的心态来面对生活 留意并尊重身体所传达的讯息。 感到紧张时,荣誉游戏的元素,...
    日更飘阅读 237评论 0 0