数值与字典解决方案二十七讲:两列数据相互去掉重复值后合并

article/2025/6/25 10:01:51

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数值与字典解决方案第二十七讲:两列数据相互去掉重复值后合并的方法

【分享成果,随喜正能量】161 善心善行的你,利己利他,积累无量福德,菩萨常伴左右,保佑一生平安,财运亨通,福禄双收。生活中,你面对这个世界并不是射出了一支箭,而是你面对了一堵墙。所以说感谢这一切,经过、遇见、曲折和磨砺,不要再给自己树立那些推不倒的墙。

第二十七讲 两列数据相互去掉重复值后合并的方法

大家好,今日继续讲VBA数组与字典解决方案的第27讲,内容是两列数据中相互去掉重复值之后将数据合并。这讲的内容利用到动态数组,固定数组,数组的合并,数组的转置等等。

1 应用场景的具体分析

还是先看实例,下面的工作表中A列和B列有两列数值如下:

我们首先要在A列中去掉B列的重复值,然后在B列中去掉和A列重复的值,然后将剩余的A,B列数合并到C列。

2 应用场景实现的代码实现及代码解读

这个问题在理论上的应用较多,实际工作中要结合具体的应用来解析。如何实现呢?

我们看下面的代码:

Sub MyNZsz_27() '第27讲 两列数中去掉相互重复值后合并"

Sheets("27").Select

Dim temvarArr1(), temvarArr2(), tem()

varArr1 = Range("A1:A" & Range("A1").End(xlDown).Row) '将A列数据写入数组

varArr2 = Range("B1:B" & Range("B1").End(xlDown).Row) '将B列数据写入数组

ReDim temvarArr1(1 To UBound(varArr1)) '将A列数据写入动态一维数组

For i = 1 To UBound(varArr1)

temvarArr1(i) = varArr1(i, 1)

Next

ReDim temvarArr2(1 To UBound(varArr2)) '将B列数据写入动态一维数组

For i = 1 To UBound(varArr2)

temvarArr2(i) = varArr2(i, 1)

Next

'在数据1中去掉数据2的值,结果赋值给tem1

tem1 = Filter(temvarArr1, temvarArr2(1), False) '给TEM1赋初始值,返回temvarArr1中不含temvarArr2(1)的值

For i = 2 To UBound(temvarArr2)

tem1 = Filter(tem1, temvarArr2(i), False)

Next i

'在数据2中去掉数据1的值,结果赋值给tem2

tem2 = Filter(temvarArr2, temvarArr1(1), False) '给TEM2赋初始值

For i = 2 To UBound(varArr1)

tem2 = Filter(tem2, temvarArr1(i), False)

Next i

ReDim tem(0 To UBound(tem1) + UBound(tem2) + 1)

For i = 0 To UBound(tem1)

tem(i) = tem1(i)

Next

For i = UBound(tem1) + 1 To UBound(tem1) + UBound(tem2) + 1

tem(i) = tem2(i - UBound(tem1) - 1)

Next

' MsgBox Join(tem) '如果需要提示用户用此代码

Range("C1") = "两列数中去掉相互重复值后合并"

[c2].Resize(UBound(tem) + 1) = WorksheetFunction.Transpose(tem)

End Sub

代码截图:


代码解析:

1) 整个 代码的过程先讲A和B列的数写入数组,然后转成一个一维数组,并分别去除重复值,得到TEM1和TEM2两个数组。最后将两个数组合并。

2) ReDim tem(0 To UBound(tem1) + UBound(tem2) + 1) 此处给动态数组以上下界的定义

3) For i = 0 To UBound(tem1)

tem(i) = tem1(i)

Next

For i = UBound(tem1) + 1 To UBound(tem1) + UBound(tem2) + 1

tem(i) = tem2(i - UBound(tem1) - 1)

Next

上述代码中分别用循环语句给TEM数组赋值。

最后我们看实际输出的结果:

今日内容回向:

1 上述代码的过程是否理解呢?

2 上述过程中有哪些是动态数组?哪些是固定数组呢?

我多年的VBA实践经验,全部浓缩在以下教程中:




http://www.hkcw.cn/article/RyKgmpCJIf.shtml

相关文章

林夏薇否认破产传闻,已发律师声明回应 正交律师处理

近期,TVB“视后”林夏薇被一家公司向香港高等法院申请破产。根据司法机构资料,案件延期至8月26日下午在高等法院提讯。对于破产一事,林夏薇回应称:“我丈夫Jason租住房子的公司有官司,正在上诉中,所以我莫名其妙,现在已交给律师处理,我也没有收到任何通知。”5月30日,…

下次放假安排已定可连休8天 国庆中秋合并假期

今天是端午节假期的最后一天,许多人已经开始期待下一次休假。根据国务院办公厅发布的2025年部分节假日安排通知,下一个长假将在四个月后的国庆节和中秋节期间。届时,国庆节与中秋节将合并放假,共8天。责任编辑:zx0176

24岁台大学霸暗网全球贩毒,3年海1亿多美元

24岁台大学霸暗网全球贩毒,3年海1亿多美元!据台媒报道,近日,美国联邦调查局(FBI)破获暗网毒品交易平台“隐身市场”,而该平台经营者“法老”的真实身份竟是24岁台湾大学资管系学生林睿庠。林睿庠因贩毒资产暴增,3年多其不法所得超过1亿美元(约7.2亿元人民币)。据悉,…

孙连城扮演者直播带货望远镜 从“宇宙区长”到带货主播

5月31日晚,曾在热播电视剧《人民的名义》中饰演“懒政区长孙连城”的演员李威,在短视频平台上开启直播带货,所售商品为天文望远镜。近一周内,李威已进行了三场关于望远镜的直播带货。6月1日上午,李威此前发布的带货直播预告视频疑似已被隐藏或删除,其商品橱窗中的天文望远…

互联网女皇340页AI报告猛料刷屏:AI增速创纪录

当地时间5月30日,玛丽米克尔发布了长达340页的“AI趋势报告”。报告指出,AI的发展速度前所未见,用户增长、使用量和资本支出均呈现出爆炸式增长,其影响力可能远超技术本身。玛丽米克尔是美国风险投资家,曾就职于摩根士丹利和凯鹏华盈,于2018年创立了自己的风投公司邦德资…

为何说中国“车圈恒大论”是误读 主流车企财务稳健

端午前夕,“车圈恒大论”再次成为业内焦点。5月30日,比亚迪集团品牌及公关处总经理李云飞通过社交媒体发布长文,首次正面回应被暗指为“汽车圈恒大”的流言,直言感觉好气又好笑,并列出财报数据逐一反驳,指出中国主流车企根本不存在所谓的“车圈恒大”。事情起源于前不久的…

关于免费版MQTT.fx 1.7.1下载与安装(附带下载链接)

MQTT.fx目前官网已经更新到5.x的版本,该版本需要付费使用,作为学习使用的话还是建议用免费的1.7.1版本,但是官网已经没有这个版本的安装包了,以下链接是我在网上找到的资料,该仓库仅用于学习交流,请勿用于商…

海外tk抓包简单暴力方式

将地址替换下面代码就可以 function hook_dlopen(module_name, fun) {var android_dlopen_ext Module.findExportByName(null, "android_dlopen_ext");if (android_dlopen_ext) {Interceptor.attach(android_dlopen_ext, {onEnter: function (args) {var pathptr …

编译原理实验 之 TINY 之 语义分析(第二次作业)

文章目录 本实验是接着前面的两个实验的基础上进行完善的,所以对于前面的实验如何操作?请看我的另外两个博客~ 编译原理 之 实验一 编译原理实验 之 Tiny C语言编译程序实验 语法分析 首先明确一下这次实验的任务? 主要目的:实现…

数组与元组:TypeScript 的基础

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

Transformer核心技术深度解析:多头注意力机制与架构精粹

一、多头注意力:模型理解的「多棱镜」 核心思想:并行化特征空间探索 传统注意力的局限:单一注意力机制如同单眼观察世界,只能捕捉单一维度的关联 多头机制的本质:为模型配备多组「认知透镜」,同时从不同子…

【C语言入门级教学】assert断⾔和指针的使用

文章目录 1.assert断⾔2.指针的使⽤和传址调⽤2.1 strlen的模拟实现2.2 传值调⽤和传址调⽤ 1.assert断⾔ assert.h 头⽂件定义了宏 assert() ,⽤于在运⾏时确保程序符合指定条件,如果不符合,就报错终⽌运⾏。这个宏常常被称为“断⾔”。 a…

拓扑排序 + 深度优先搜索解决问题

如大家所知,使用深度优先搜索实现拓扑排序的总体思想是:对于一个特定节点,如果该节点的所有相邻节点都已经搜索完成,则该节点也会变成已经搜索完成的节点,在拓扑排序中,该节点位于其所有相邻节点的前面。一…

cnn训练并用grad-cam可视化

使用大米图片训练集,包含五个文件,分别是5种品牌的大米,使用cnn进行分类训练。 -Arborio/ :代表 Arborio 品种的大米图像数据,根据 Rice_Citation_Request.txt 文件可知,该数据集中包含 Arborio 品种的大米…

放弃 tsc+nodemon 使用 tsx 构建Node 环境下 TypeScript + ESM 开发环境搭建指南

放弃 tscnodemon 使用 tsx 构建Node 环境下 TypeScript ESM 开发环境搭建指南 目标 在 node 环境下构建 typescript esmodule模块 开发环境,这样可以使用 typescript 提供的类型安全和类型提示便利性。 我们要实现下面的效果 文件目录 src/index.ts 注意是 esmod…

Geogebra中导出3D Graphics窗口

导出没有特别的自定义设置,默认的第一个窗口是Graphics, 还有Graphics 2和3D Graphics ,优先顺序依次递减。如果要想导出的是3D Graphics, 需要确保关闭另外两个窗口。 这个是视频转换: 下面是直接导出: 带渲染效果的,其实是Al…

LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 上

题目:1731. 每位经理的下属员工数量 题解: select employee_id,name,reports_count,average_age from Employees t1,(select reports_to,count(*) reports_count,round(avg(age)) average_agefrom Employeeswhere reports_to is not nullgroup by repor…

韩国大选三强对决 李在明领跑 民众意愿强烈

韩国第21届总统选举于6月3日举行,预计4日凌晨揭晓结果。当选总统将立即就职,任期5年。当地时间2025年5月30日,韩国京畿道果川市中央选举管理委员会选举综合情况室的工作人员正在检查境内提前投票箱的存放地点监控视频。从去年12月3日的风波到今年4月4日前总统尹锡悦被罢免,…

48岁网红“大刚”疑酒精中毒离世 民间艺人突陨落

6月1日,短视频账号“大刚演艺传媒”发布讣告,宣布景旭刚因病于当天上午不幸离世,享年48岁。定于6月4日出殡。许多网友在评论区对景旭刚的离世表达了哀思,并称赞他多才多艺。次日,景旭刚的妻子确认了这一消息,称丈夫因饮酒过量导致酒精中毒去世。景旭刚的儿子也在朋友圈发…

泽连斯基:蛛网行动准备超过一年半 精心策划载入史册

乌克兰在与俄罗斯举行第二轮谈判前夕,发动了“蛛网”行动,袭击了俄罗斯多地。据报道,行动中的无人机通过货柜车偷运进入俄方领土。乌克兰总统泽连斯基表示,这次行动经过了一年半以上的准备,并且精心策划。他称赞此次行动堪称精彩,认为乌军的行动无疑将载入史册。乌克兰安…