c语言讲两个数组合并_VBA数组与字典解决方案第27讲:两列数据相互去掉重复值后合并..._weixin_39638708的博客-程序员宝宝

技术标签: vb6 怎么把一个数组的 0 值 去掉  共享内存中动态数组  c语言讲两个数组合并  循环合并nump数组  

1d086fc157b52020a3369fdcbb04928a.png

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

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

13248fd87cf2f2c1ca3b6dca231c4c72.png

我们首先要在A列中去掉B列的重复值,然后在B列中去掉和A列重复的值,然后将剩余的A,B列数合并到C列。这个问题在理论上的应用较多,实际工作中要结合具体的应用来解析。如何实现呢?我们看下面的代码:

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

代码截图:

7669dce3e66d262957af0c45bb3c6312.png


代码解析:

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数组赋值。

最后我们看输出的结果:

75f9ab892c64064e01ca55d5c7bb6bee.png

今日内容回向:

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39638708/article/details/110122764

智能推荐

Trying out the Intel Neural Compute Stick 2 – Movidius NCS2_weixin_30321709的博客-程序员宝宝

Trying out the Intel Neural Compute Stick 2 – Movidius NCS2Disclaimer:The opinions in this article (and on this website in general) are entirely mine and not those of my employer Dell EMC. T...

活动回顾 | 体验家XMPlus出席WRE营销创新与科技峰会2021_体验家的博客-程序员宝宝

2021年11月16日,WRE营销创新与科技峰会2021在上海万豪虹桥大酒店圆满落幕。「体验家XMPlus」作为银牌赞助商受邀出席,并且凭借在客户体验管理领域的先发优势、技术实力和丰富实践,荣获“最佳客户体验管理CEM服务商”奖项。本次峰会由WREWorld Retail Elite主办,由雅各布专栏、上海商业经济学会大力支持,超过300+零售消费品行业的营销与数字化负责人莅临活动现场,共同围绕“全洞察、全渠道、全触点、全链路”这一主题,展开深入的探讨。顶尖大咖,齐聚盛会作...

H3C S5720交换机系统文件丢失一直重启的解决办法_weixin_34240657的博客-程序员宝宝

一、故障描述:公司买了两台交换机H3C S5120,由于小兄弟没经验,把flash:给格式化了,交换机不停的在重启,无法进入系统。二、解决思路:1.下载tftp软件。2.从另外一台交换机的flash中下载一份系统文件。3.装系统文件上传致故障交换机的flash中,重启交换机,故障解决。三.详细配置过程如...

BUU-Crypto密码题_你好..的博客-程序员宝宝

1.Quoted-printable 打开文件,可以看到“=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6”这样的直接用编译器http://web.chacuo.net/charsetquotedprintable/flag{那你也很棒哦}2.rabbit密码由题可读出,使用rabbit密码直接解出 (题目:U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI)http://ww...

python day3 python基础 函数基本语法及特性 参数与局部变量 返回值 嵌套函数 递归 匿名函数 函数式编程介绍 高阶函数 内置函数..._weixin_30391339的博客-程序员宝宝

本节内容函数基本语法及特性参数与局部变量返回值嵌套函数递归匿名函数函数式编程介绍高阶函数内置函数温故知新1. 集合主要作用:去重关系测试, 交集\差集\并集\反向(对称)差集>>> a = {1,2,3,4}>>> b ={3,4,5,6}>>> a{...

随便推点

Hive:把一段包含中文的sql脚本粘贴到beeline client运行中文乱码_weixin_34365635的博客-程序员宝宝

背景:在做项目过程中不可能hive表中都是非中文字段。在最近做的项目中就遇到需要在beeline界面上执行查询脚本,但脚本中包含中文,正常一个脚本用文本写好后,粘贴到beeline窗口运行时,发现中文是乱码,而且回车执行也抛出了错误。解决方案:使用"beeline -f 文件"解决问题,在我的需求中,这种方案确实解决了问题。需要的业务语句:use x_hive_db;c...

android 编译faad2_jwzhangjie的博客-程序员宝宝

由于最近要做AAC解码,查看了网上最初有两种思路:第一章种是ffmpeg,我查看./configure --list-decoders的时候,有看到aac解码器,同时在x86上编译也能够打开aac解码器,但是用用ndk交叉编译的时候即使--enable-decoder=aac也没有打开AAC解码器,所以这种方法暂停。第二中方法是使用faad2解码,在x86上调试,写一个demo能够解码aac,然后

美团三面:消息中间件实现高可用架构,你会怎么设计?_石杉的架构笔记的博客-程序员宝宝

对于一个合格的高级Java工程师而言,你肯定会碰到在系统里用到MQ的场景,那么这个时候你需要基于你的业务场景和需求,考虑在使用MQ的时候可能遇到的一些技术问题

转 最近5年183个Java面试问题列表及答案[最全]_weixin_33860722的博客-程序员宝宝

Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象。因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 Stri...

iOS真机播放MP4视频文件不出来的解决方法 AVPlayer_Onlyoner的博客-程序员宝宝

MP4视频导出前,有个“逐行”属性设置成了“上场优先”,改成“逐行”

阿里云maven代理仓库使用_chilong0633的博客-程序员宝宝

代理的仓库列表仓库名称代理源地址使用地址centralhttps://repo1.maven.org/maven2/https://maven.aliyun.com/repository/central或https://maven.aliyun.com/nexus...

推荐文章

热门文章

相关标签