字典的基础我们已经学习完了,这节我们分享下字典的实际应用之一。

案例如下:

上图中有客户和拜访时间,现在要提取每个客户的首次拜访时间和末次拜访时间。

如果直接用函数做,我们可以先把姓名列用删除重复项获得不重复的姓名,求首次拜访时间用Vlookup,求末次拜访时间用Lookup。

我们学习了字典后可以用字典技术实现这个目的,理解起来也很简单。

一、求首次:

把A、B两列的姓名和拜访时间先写入数组arr,然后把数组中的每个元素写入字典,因为字典不允许有重复的key,所以当遇到重复的姓名时,直接跳过,继续写入下一条,这样得到的字典中的项目对就是我们想要的结果。这里其实用到的就是前面章节讲的字典写入技巧中第一种方法,不明白的可以返回去好好学习下。

具体代码如下:

Sub 求首次()

Dim d As Object, arr, i%

On Error Resume Next

Set d = CreateObject("scripting.dictionary")

arr = Range("A2", [b2].End(xlDown))

For i = 1 To UBound(arr)

d.Add arr(i, 1), arr(i, 2)

Next

[d2].Resize(d.Count, 1) = Application.Transpose(d.keys)

[e2].Resize(d.Count, 1) = Application.Transpose(d.items)

End Sub

2、求末次:

这里用到的是字典写入技巧中第二种办法,修改key对应的item值,如果字典中存在该key,那就直接修改,这样就可以得到某姓名最后一次出现时对应的时间,没有该key的就直接加进去。

代码如下:

Sub 求末次()

Dim d As Object, arr, i%

Set d = CreateObject("scripting.dictionary")

arr = Range("A2", [b2].End(xlDown))

For i = 1 To UBound(arr)

d(arr(i, 1)) = arr(i, 2)

Next

[g2].Resize(d.Count, 1) = Application.Transpose(d.keys)

[h2].Resize(d.Count, 1) = Application.Transpose(d.items)

End Sub

看来是万变不离其宗!所以基础一定要理解透才能融会贯通!

转自:米宏Office

字典含有重复的key不覆盖_EXCEL字典实例应用一(求首次和末次)相关推荐

  1. Go 学习笔记(12)— 字典map定义、初始化、读取字典、删除字典、清空字典、map 按 key 进行有序遍历

    Go 中字典也叫做 map , map 是一种无序的键值对的集合. map 最重要的一点是通过 key 来快速检索数据, key 类似于索引,指向数据的值. 1. 字典定义 可以使用内建函数 make ...

  2. python读取json并列_python解析含有重复key的json方法

    python自带的json包能够方便的解析json文本,但是如果json文本中包含重复key的时候,解析的结果就是错误的.如下为例 {"key":"1", &q ...

  3. python字典的键可以用列表吗_python字典多键值及重复键值的使用方法(详解)

    在Python中使用字典,格式如下: dict={ key1:value1 , key2;value2 ...} 在实际访问字典值时的使用格式如下: dict[key] 多键值 字典的多键值形式如下: ...

  4. python 找出其中不含有重复字符的最长子串的长度

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "ab ...

  5. python 判断字典是否包含某个key,以及对应的value 值

    python 判断字典是否包含某个key 可以使用 in 来判断 具体如下: num = {"a": 1, "b": 2, "c": 3} ...

  6. python计算两个字典的相同点(从key、value、item角度)

    python计算两个字典的相同点(从key.value.item角度) 字典是由一个一个的 key-value 构成的,key 是找到数据的关键,Python 对字典的操作都是通过 key 来完成的. ...

  7. py编程技巧-1.5-如何快速找到多个字典的公共键(key)

    实际案例: 足球联赛,对于每轮球员的进球进行统计: 第一轮:{'梅西':2,'本泽马':1,'C罗':3} 第二轮:{'梅西':4,'格里兹曼':1,'C罗':3} 第三轮:{'梅西':2,'贝尔': ...

  8. python练习题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度

    题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 题目解析: 有一个字符串,长度不定, 要找出不重复字符串的长度,我们可以这么假设,先找到第一个下标,然后从后面拿到元素的下标对 ...

  9. access重复数据累计_Access 查询同一张表中两个或以上字段含有重复项的记录

    这篇文章是对我自己另一篇文章的补充.( Access 查询同一张表中某个字段含有重复项的记录) 记录的动力总是来自于工作中遇到的问题.上次只要根据某个字段把有重复项的记录列出来,这次条件增多了,要根据 ...

最新文章

  1. 在RichTextEditor组件中使用自定义右键。
  2. Contains Duplicate --包含相同值
  3. MySQL日期数据类型、时间类型使用总结
  4. java与平台无关的原因
  5. WEB安全基础-SQL相关
  6. 这8种保证线程安全的技术你都知道吗?
  7. python用多线程可以快几倍_用了python多进程,我跑程序花费的时间缩短了4倍
  8. 程序员崩溃了,想拿的年终奖怎么说黄就黄?!
  9. 观阿凡达水之道之感想
  10. 逻辑学在计算机科学的应用,逻辑学在计算机科学中的应用
  11. ES文件浏览器 v4.1.8.1 破解高级版
  12. 西农大 Java 实验四 第三题
  13. 精心打造中国第一个商用3G网络
  14. 随机误差与Allan方差的理解
  15. 小米12pro和iqoo9pro哪个好
  16. Onenote实用笔记
  17. Acwing春季每日一题 混合牛奶(朴素做法和优化做法)
  18. 网上计算机培训评语,电脑绘画班评语
  19. 如何为3CX系统配置WatchGuard XTM防火墙
  20. 上兵伐谋,其次伐交,其次伐兵,其下攻城

热门文章

  1. 高盛 CEO:没背景的孩子,请与有野心的人为伍!
  2. github push代码出错fatal: Authentication failed for ‘https:/
  3. 推荐系统实战学习速成攻略1——预测准确度
  4. python物体跟着鼠标走_用Python写一个跟随鼠标运动的自定义窗口
  5. Leetcode每日一题:122.best-time-to-buy-and-sell-stock-ii(买股票的最佳时机Ⅱ)
  6. 软件架构-里氏替换原则
  7. java多线程-生产者消费者模式
  8. 用OSSIM平台轻松发现“心脏出血”漏洞
  9. 第三:项目框架设计介绍
  10. php 读写excel 网络错误,谁用过PHPExcel,导出的文件报“无法读取的内容”错误