最近写了一些小功能,对字典有了进一步的理解,太强大了!

个人最近用过的字典应用有这么几个,写下来防止自己忘~同时方便大家

一、查找重复行

【原理】利用字典的exist方法,将数据加入字典时判断一下,如果已经存在,就说明当前数据为重复数据,应该删除

【示例代码】

Sub chongfu()         '查重
Dim i As Long
Dim endline As Long '定义工作表长度变量
endline = Sheet3.Range("A30000").End(xlUp).Row '获取工作表Sheet3有数据的最后一行行号
Set d = CreateObject("scripting.dictionary") '设定字典d
For i = endline To Step - '从最后一行开始,依次把各个字段拼接到一起(注意,这里我的需求是这几个字段拼在一起的字符串不允许重复,因此我先拼接再判重)
'把所有字符串拼接到数组里
If Sheet3.Cells(i, ) <> "" Then '判断该行是否为空
If IsError(Sheet3.Cells(i, )) = False Then '如果关键单元格不是#N/A,则进入字典设置
x = Sheet3.Cells(i, ) '******************设置赋给字典的变量,即需要去重的单元格!*******************
If Not d.Exists(x) Then '判断是否重复
d(x) = x '如果不重复,则把x定为item
Else
Sheet3.Rows(i & ":" & i).Delete Shift:=xlUp '如果字典中已有对应的item,则该行重复,删除重复的行
End If
End If
End If
Next
End Sub

【效果展示】

二、查找关键字

【原理】最常见的应用,根据key来查找对应的item

【示例代码】

Sub DicFind()       '查找编号对应的数据
endline = Sheet3.Range("E100000").End(xlUp).Row '获取待匹配的数据区域长度
Set d = CreateObject("Scripting.Dictionary") '设置字典d
Arr = Sheet3.Range("A2:B26975") '获得字典数据
For i = To UBound(Arr) '设置sheet3 A列为字典关键字key,B列为字典关键字对应的值(item)
If Arr(i, ) <> "" Then '当A列不为空时,将item装入数组
x = Arr(i, ) '想以哪一列为关键字查找结果,就把x设置成哪一列的单元格
d(x) = Arr(i, )
Else
Exit For 'A列为空时,退出for循环
End If
Next
Brr = Sheet3.Range("$E$2:$F$" & endline) '将待查找的数据放入数组
For j = To UBound(Brr)
x = Brr(j, ) '将E列的编号设为key
If d.Exists(x) Then '如果字典中有对应的item,则将item写入数组brr
Brr(j, ) = d(x) '把查找到的item写入brr,这里对应F列
End If
Next
Sheet3.Range("$E$2:$F$" & endline) = Brr '将匹配好的数据写回单元格
End Sub

【效果展示】

建设中。。。。。。之后想起来就更新~

写了一半,发现早就有完善的教程了(汗)

作者是ExcelHome 的ExcelVBA程序开发区的版主 蓝桥玄霜,特此注明

http://club.excelhome.net/thread-868892-1-1.html

Excel VBA ——字典实用技巧的更多相关文章

  1. Excel VBA入门(二)数组和字典

    数组和字典也是VBA的常用到数据类型之一.但是我翻了有四五本VBA教程相关的书,里面都没有介绍到字典,数组到是在介绍数据类型时有介绍,而并没有提到字典. 事实上,字典不是VBA内置的类型,它是Wind ...

  2. Excel实用技巧-如何批量提取excel工作表名称

    Excel实用技巧-如何批量提取excel工作表名称 1. 打开Excel文件,点击“公式”栏,进而点击“定义管理器” 2. 在弹出的对话框中,点击新增按钮, 名称:“sheet”,引用位置:“=RE ...

  3. 在Excel VBA中使用SQL到底优势在哪儿

    小爬在之前的博文中多次提到,可以在VBA中写SQL来操作Excel文件,实现各类数据处理和分析需求.那么,你可能有这样的疑问:Excel原生的VBA,数据透视表,数据分析功能不够吗,为啥一定要用SQL ...

  4. iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

  5. 使用Excel VBA编程将网点的百度坐标转换后标注到高德地图上

    公司网点表存储的坐标是百度坐标,现需要将网点位置标注到高德地图上,研究了一下高德地图的云图数据模版 http://lbs.amap.com/yuntu/reference/cloudstorage和坐 ...

  6. Excel VBA(宏):添加宏

    写在前面: .编写宏,打开VBA,双击ThisWorkbook对当前工作薄进行编写宏:双击Sheet1,对整个sheet编写宏: 或者创建模块,在模块里,编写.调试代码. 打开VBA的方法见第一讲,结 ...

  7. JavaScript函数作用域与对象以及实用技巧

    1. JS作用域 1.1 全局作用域和局部作用域 函数外面声明的就是 全局作用域 函数内是局部作用域 全局变量可以直接在函数内修改和使用 变量,使用var是声明,没有var是使用变量. 如果在函数内使 ...

  8. Excel VBA 操作 Word(入门篇)

    原文地址 本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人.   一.新建Word引用 需要首先创建一个对 Word A ...

  9. Excel VBA入门(九)操作工作薄

    虽然我前面讲过,在VBA中操作工作薄并不是件明智的事,但有些时候,还是避免不了要这么做.绝大多数情况下,我们要做的是获取到某个工作薄对象,并以此来获得其中的工作表对象,然后再对工作表中的数据进行处理. ...

随机推荐

  1. securecrt 方向键乱码解决

    1 下载安装包rlwrap: rlwrap-0.30.tar.gz     http://utopia.knoware.nl/~hlub/uck/rlwrap/   2  install rlwrap ...

  2. GNU make 汇总

    = 是最基本的赋值 := 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值 $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件 makefile获取 ...

  3. python3学习笔记10(迭代器和生成器)

    参考http://www.runoob.com/python3/python3-iterator-generator.html 迭代器 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束 ...

  4. Telegraf安装与介绍

    Telegraf 是什么? Telegraf 是一个用 Go 编写的代理程序,是收集和报告指标和数据的代理.可收集系统和服务的统计数据,并写入到 InfluxDB 数据库.Telegraf 具有内存占 ...

  5. [css选择器]总结:IE6不支持的CSS选择符

    转载地址:https://www.wenjiwu.com/doc/zvsbii.html.此文最后也给出了原文地址,但是我点击过去发现是什么赌博彩票的地址,360也弹出小心的提示,所以这里只给出了我转 ...

  6. nginx+uwsgi配置

    nginx #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; ...

  7. 数据库乐观锁和悲观锁的理解和实现(转载&总结)

    数据的锁定分为两种,第一种叫作悲观锁,第二种叫作乐观锁. 1.悲观锁,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住.[数据锁定:数据将暂时不会 ...

  8. spring boot profiles 实现多环境下配置切换 docker版

    1,前言 开发环境总需要调试,docker直接部署不需要调试,环境配置不一样,这里的目的只是,在docker文件环境与开发环境使用不同的配置文件,项目结构如下 2,设置项目配置文件 默认配置文件 ap ...

  9. 事务回滚 try catch

    USE tempdb IF OBJECT_ID ('dbo.test') IS NOT NULL DROP TABLE dbo.test GO CREATE TABLE dbo.test ( id I ...

  10. spring事务[转]

    https://www.cnblogs.com/cnmenglang/p/6410848.html 先了解事务的7种传播属性: PROPAGATION_REQUIRED -- 支持当前事务,如果当前没 ...