大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第52讲:利用字典,提取两列数据重复值。有人讲:字典是VBA中最为精华的部分,持这种观点的人肯定有自己的道理,确实,利用字典可以给我的代码带来很大的方便之处,今日我讲解的是利用字典,提取两列的重复数据.在实际的工作中排重和提取重复的数据是很常见的工作,如果直接进行比较核对,真的很费事费时,之前我讲过数据库的方法,不失为一种好的方案.今日我们讲解利用字典的方法,这也是一种非常好的方案.

实例,下面的AB列数据,我们要提取出在A中与B列重复的数据,该如何进行?

我们首先看看数据,很多是重复的,我们首先要进行排重处理,一般的方案难于应付,下面看我给出的字典方案代码:

Sub mynzsz_52() '第52讲 利用字典,提取两列数据重复值

Sheets("52").Select

Set mydic = CreateObject("Scripting.Dictionary")

myarr1 = Range([A2], [A65536].End(xlUp))

myarr2 = Range([B2], [B65536].End(xlUp))

For i = 1 To UBound(myarr1)

'将键值赋值为0

mydic(myarr1(i, 1)) = 0

Next

For j = 1 To UBound(myarr2)

'如果数组2在字典中存在相应的键,那么将键值更改为1

If mydic.exists(myarr2(j, 1)) Then mydic(myarr2(j, 1)) = 1

Next

'对于字典中的每个键进行判断,如果相应的键值为0,也就是说在数组2中不存在,那么移除

For Each d In mydic.keys

If mydic(d) = 0 Then mydic.Remove (d)

Next

'将字典数据回填到工作表

[e:e].ClearContents

Range("e1") = "A列中与B列重复的值"

Range("e2").Resize(mydic.Count, 1) = WorksheetFunction.Transpose(mydic.keys)

End Sub

代码截图:

代码解析:

1 上述代码实现了提取重复数据并排重的功能,代码简洁,操作灵活.

2. Set mydic = CreateObject("Scripting.Dictionary")

上述代码创建了一个字典

3. myarr1 = Range([A2], [A65536].End(xlUp))

myarr2 = Range([B2], [B65536].End(xlUp))

上述代码分别将两列数据放到数组中.

4 For i = 1 To UBound(myarr1)

'将键值赋值为0

mydic(myarr1(i, 1)) = 0

Next

将数组1的数据放到字典的键中同时键值赋值为0

5 For j = 1 To UBound(myarr2)

'如果数组2在字典中存在相应的键,那么将键值更改为1

If mydic.exists(myarr2(j, 1)) Then mydic(myarr2(j, 1)) = 1

Next

在数组2中建立循环,如果在字典中存在相应的键,那么将键值更正为1

6 For Each d In mydic.keys

If mydic(d) = 0 Then mydic.Remove (d)

Next

将字典中的数据进行处理,假如键值为0,那么移除

7 '将字典数据回填到工作表

[e:e].ClearContents

Range("e1") = "A列中与B列重复的值"

Range("e2").Resize(mydic.Count, 1) = WorksheetFunction.Transpose(mydic.keys)

上述代码数据回填.

下面看代码的运行:

今日内容回向:

1 利用字典如何获取重复数据的值?

2 上述代码中为什么要对键值重新赋值?

vba 提取 json某个值_利用VBA字典,提取两列数据的重复值相关推荐

  1. Excel如何统计两列数据有多少重复值

    如下图.是某班级期中和期末考试前二十名学生名单,现在想要快速统计出两次考试均在前二十名的学生人数. 在D2单元格输入公式=COUNT(MATCH(A2:A21,B2:B21,0)),以CTRL+SHI ...

  2. excel两列数据对照重复值

    这里用的是laravel框架,需求是把几个sheet里面的两列的重复值筛选出来,excel本身好像有这个函数,但不太会用,自定义也不强,我就自己写了个函数,直接上代码: public function ...

  3. excel如何筛选一列数据的重复值,并找到其他列的对应数据

    excel如何筛选一列数据的重复值,并找到其他列的对应数据.就会用到excel的高级筛选功能.如下: 经过筛选,就得到我们想要的结果了.

  4. Excel2016表格中只有一列数据有重复值,怎么快速删除重复值

    环景: win 10 专业版 office2016 问题描述: 表格中只有一列数据有重复值,怎么快速删除重复值 解决方案: 1.菜单栏-数据-删除重复值 2.选中要删除的那列D列-删除重复值 3.确定 ...

  5. 绑定dictionary 给定关键字不再字典中_VBA代码集锦-利用字典做两列数据的对比并对齐...

    源数据: 代码: Sub 对比() Dim arr, brr, crr Dim i, j, n, lastrowA, lastrowB As Integer '建立字典对象 Set d = Creat ...

  6. oracle中修改多个字段默认值_利用VBA代码在已有的数据表中删除、添加、修改字段...

    大家好,今日继续给大家讲解VBA数据库解决方案的第21讲,如何利用VBA代码在已有的数据表中删除,添加,修改字段.这个内容是操作数据库的一项必修的内容,还望大家在实际工作中多利用,所以这节的知识,对于 ...

  7. vba显示正在加载_利用VBA代码显示工作簿的路径及完全路径的方案及对工作薄的操作...

    分享成果,随喜真能量.大家好,今日内容仍是和大家分享VBA编程中常用的简单"积木"过程代码,这些内容多是取至我的"VBA代码解决方案"教程中内容.NO.139- ...

  8. Java反射设置list的属性值_利用java反射比较两个实体有哪些属性值不一样

    分享一个利用反射实现比较两个实体属性值的方法: package net.zwq1105.test; import java.beans.Introspector; import java.beans. ...

  9. python计算相关性显著性p值_基于python实现计算两组数据P值

    我们在做A/B试验评估的时候需要借助p_value,这篇文章记录如何利用python计算两组数据的显著性. 一.代码# TTest.py # -*- coding: utf-8 -*- ''' # C ...

最新文章

  1. Yolov3网络架构分析
  2. 内存检测工具Dr. Memory的使用
  3. 了解GAN背后的设计,训练,损失函数和算法
  4. 美国版“非升即走”瞄准终身教授,2年评审不通过就减薪撤职,其他高校开始抢人...
  5. 函数的实参 函数的形参 闭包 js
  6. UA MATH563 概率论的数学基础 鞅论初步10 Doob可选停止定理与一维随机游走的exiting time
  7. Codeforces Round #660 (Div. 2)
  8. 从MapX到MapXtreme2004[4]-标注AutoLabel
  9. 软件工程学习进度表06
  10. 《高性能MySQL-第三版》 的总评价
  11. linux系统amd驱动怎么安装教程,ubuntu amd显卡驱动安装教程
  12. excel一列求和_EXCEL表格怎么自动求和?4种典型批量求和套路
  13. pythonweb数据可视化_基于Python实现交互式数据可视化的工具(用于Web)
  14. springboot2.0整合logback日志(详细)
  15. 论文《Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation ...》阅读
  16. python代码书写_如何优雅的书写Python代码, python使用小技巧
  17. 一篇文章解读人工智能的原理及产业升级机会
  18. css实现聊天气泡对话框
  19. #Sora#peewee plus celery = ?
  20. 修改elmentui中el-date-picker下拉框样式(大小)

热门文章

  1. Python 的垃圾回收回收机制(源码)
  2. 训练数据的分布对F-measure, recall 和 precision的影响
  3. Java 高级特性 --- 反射
  4. Replace Array with Object(以对象取代数组)
  5. TPTP(Java Profiling Tools插件)对Java程序进行性能测试
  6. SQL Server查询中特殊字符的处理方法
  7. C++学习之路 | PTA乙级—— 1026 程序运行时间(精简)
  8. C++学习之路 | PTA乙级—— 1004 成绩排名 (20分)(精简)
  9. python22个字符串长度_python字符串处理内置方法一览表
  10. 用java编写保留两位小数_Java保留两位小数的几种写法总结