「Excel-VBA」专项-字典-03-求差集

「Excel-VBA」专项-字典-03-求差集系统环境 Windows 10Excel 2016 版本本系列讲讲字典功能利用字典快速移除键功能 求两个集合的差集 Part 1 应用场景目前有一采购清单 A 列 库存也有一堆物品 B 列 现在需要采购库存中没有但在采购清单中的物品 其实就是 C

欢迎大家来到IT世界,在知识的湖畔探索吧!

  • 系统环境:Windows 10
  • Excel:2016版本

本系列讲讲字典功能

利用字典快速移除键功能,求两个集合的差集


Part 1:应用场景

  1. 目前有一采购清单(A列),库存也有一堆物品(B列),现在需要采购库存中没有但在采购清单中的物品,其实就是C列=A列- B列,求两者的差集
「Excel-VBA」专项-字典-03-求差集

图1 示例

欢迎大家来到IT世界,在知识的湖畔探索吧!


Part 2:逻辑过程

    1. 定义两个字典(d1,d2),字典d1的键存放A列数据,字典d2的键存放B列数据
    2. 对字典d2的键进行循环,依次判断是否在字典d1中,若在则移除字典d1中对应的键
    3. 将字典d1的键输出到C

Part 3:代码

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 

欢迎大家来到IT世界,在知识的湖畔探索吧!

「Excel-VBA」专项-字典-03-求差集

图2 代码截图

「Excel-VBA」专项-字典-03-求差集

图3 执行结果


Part 4:部分代码解读

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

以上,为本次的介绍内容,下回见。

本文首发于微信公众号:Excel高效办公之VBA。排版和细节略作修改,发于头条



免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/78524.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信