字典含有重复的key不覆盖_EXCEL字典实例应用一(求首次和末次)
字典的基础我们已经学习完了,这节我们分享下字典的实际应用之一。
案例如下:
上图中有客户和拜访时间,现在要提取每个客户的首次拜访时间和末次拜访时间。
如果直接用函数做,我们可以先把姓名列用删除重复项获得不重复的姓名,求首次拜访时间用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字典实例应用一(求首次和末次)相关推荐
- Go 学习笔记(12)— 字典map定义、初始化、读取字典、删除字典、清空字典、map 按 key 进行有序遍历
Go 中字典也叫做 map , map 是一种无序的键值对的集合. map 最重要的一点是通过 key 来快速检索数据, key 类似于索引,指向数据的值. 1. 字典定义 可以使用内建函数 make ...
- python读取json并列_python解析含有重复key的json方法
python自带的json包能够方便的解析json文本,但是如果json文本中包含重复key的时候,解析的结果就是错误的.如下为例 {"key":"1", &q ...
- python字典的键可以用列表吗_python字典多键值及重复键值的使用方法(详解)
在Python中使用字典,格式如下: dict={ key1:value1 , key2;value2 ...} 在实际访问字典值时的使用格式如下: dict[key] 多键值 字典的多键值形式如下: ...
- python 找出其中不含有重复字符的最长子串的长度
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "ab ...
- python 判断字典是否包含某个key,以及对应的value 值
python 判断字典是否包含某个key 可以使用 in 来判断 具体如下: num = {"a": 1, "b": 2, "c": 3} ...
- python计算两个字典的相同点(从key、value、item角度)
python计算两个字典的相同点(从key.value.item角度) 字典是由一个一个的 key-value 构成的,key 是找到数据的关键,Python 对字典的操作都是通过 key 来完成的. ...
- py编程技巧-1.5-如何快速找到多个字典的公共键(key)
实际案例: 足球联赛,对于每轮球员的进球进行统计: 第一轮:{'梅西':2,'本泽马':1,'C罗':3} 第二轮:{'梅西':4,'格里兹曼':1,'C罗':3} 第三轮:{'梅西':2,'贝尔': ...
- python练习题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 题目解析: 有一个字符串,长度不定, 要找出不重复字符串的长度,我们可以这么假设,先找到第一个下标,然后从后面拿到元素的下标对 ...
- access重复数据累计_Access 查询同一张表中两个或以上字段含有重复项的记录
这篇文章是对我自己另一篇文章的补充.( Access 查询同一张表中某个字段含有重复项的记录) 记录的动力总是来自于工作中遇到的问题.上次只要根据某个字段把有重复项的记录列出来,这次条件增多了,要根据 ...
最新文章
- 在RichTextEditor组件中使用自定义右键。
- Contains Duplicate --包含相同值
- MySQL日期数据类型、时间类型使用总结
- java与平台无关的原因
- WEB安全基础-SQL相关
- 这8种保证线程安全的技术你都知道吗?
- python用多线程可以快几倍_用了python多进程,我跑程序花费的时间缩短了4倍
- 程序员崩溃了,想拿的年终奖怎么说黄就黄?!
- 观阿凡达水之道之感想
- 逻辑学在计算机科学的应用,逻辑学在计算机科学中的应用
- ES文件浏览器 v4.1.8.1 破解高级版
- 西农大 Java 实验四 第三题
- 精心打造中国第一个商用3G网络
- 随机误差与Allan方差的理解
- 小米12pro和iqoo9pro哪个好
- Onenote实用笔记
- Acwing春季每日一题 混合牛奶(朴素做法和优化做法)
- 网上计算机培训评语,电脑绘画班评语
- 如何为3CX系统配置WatchGuard XTM防火墙
- 上兵伐谋,其次伐交,其次伐兵,其下攻城
热门文章
- 高盛 CEO:没背景的孩子,请与有野心的人为伍!
- github push代码出错fatal: Authentication failed for ‘https:/
- 推荐系统实战学习速成攻略1——预测准确度
- python物体跟着鼠标走_用Python写一个跟随鼠标运动的自定义窗口
- Leetcode每日一题:122.best-time-to-buy-and-sell-stock-ii(买股票的最佳时机Ⅱ)
- 软件架构-里氏替换原则
- java多线程-生产者消费者模式
- 用OSSIM平台轻松发现“心脏出血”漏洞
- 第三:项目框架设计介绍
- php 读写excel 网络错误,谁用过PHPExcel,导出的文件报“无法读取的内容”错误