使用VBA快速比对数据

news2024/11/20 22:39:49

实例需求:第一行是全系列数据集合,现在需要对比第一行数据,查找第2行数据中缺失的数字,保存在第3行中。

具备VBA初步使用经验的同学,都可以使用双重循环实现这个需求,这里给大家提供另一种实现思路,如何快速找到这些缺失数字。

在这里插入图片描述

Sub Demo()
    Dim res(), arrData1, arrData2
    Dim sNumlist, iCnt, iIdx, i
    arrData1 = Range([B1], [B1].End(xlToRight))
    arrData2 = Application.Transpose(Application.Transpose(Range([A2], [B2].End(xlToRight).Offset(0, 1))))
    sNumlist = Join(arrData2, "|")
    iCnt = UBound(arrData1, 2)
    ReDim res(0, 1 To iCnt)
    iIdx = 1
    For i = 1 To iCnt
        If InStr(1, sNumlist, "|" & arrData1(1, i) & "|", vbTextCompare) = 0 Then
            res(0, iIdx) = arrData1(1, i)
            iIdx = iIdx + 1
        End If
    Next
    [B3].Resize(1, iCnt).Value = res
End Sub

【代码解析】
第4行代码将工作表中第1行数据加载到数组中。
第5行代码将工作表中第2行数据加载到数组中,请注意与第4行的不同之处在于,数据区域从A列到最后一个数据(J列)之后一列(K列)结束,也就是数组中的第一个和最后一个元素都是空值。经过两次Transpose,使得结果为单维数组,便于后续代码进行合并。
第6行代码调用Join函数将数组arrData2合并为一个字符串,使用竖线作为分隔符,本示例中结果如下,由于第5代码中的特殊处理,使得此处获得了起始处和结尾处的竖线,而不需要使用字符串合并单独处理。

|7|8|9|10|1|2|14|15|6|

第7行代码获取数据的个数。
第8行代码创建动态数据保存结果。
第10~15行代码使用For循环结构查找数据。
第11行代码调用Instr查找对比数据,这里的小技巧在于:如何避免将数组14或者15中的十位数字匹配数字1。在被查找数字两侧增加竖线,也就是查找|1|,这就有效的避免了上述误判,并且不需要循环遍历数组进行逐个对比。
第12行代码将缺失数字保存在结果数组中。
第13行代码保存位置序号加一。
第16行代码将结果写入到工作表中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/961510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

写的一款简易的热点词汇记录工具

项目需要对用户提交的附件、文章、搜索框内容等做热词分析。如下图: 公司有大数据团队。本着不麻烦别人就不麻烦别人的原则,写了一款简易的记录工具,原理也简单,手工在业务插入锚点,用分词器分好词,排掉字…

阿晨的运维笔记 | CentOS部署Docker

使用yum安装 # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 …

使用VBA快速关闭应用程序进程

使用VBA进行开发时,如果需要关闭其他Office应用程序,那么通常可以使用GetObject的方式获取该应用程序的引用,然后再关闭,有时需要重复多次以关闭多进程。如果希望关闭的应用程序并非Office组件,那么GetObject方式有时就…

裸露土方智能识别算法 python

裸露土方智能识别算法通过opencvpython网络模型框架算法,裸露土方智能识别算法能够准确识别现场土堆的裸露情况,并对超过40%部分裸露的土堆进行抓拍预警。此次算法用到的Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流…

NOR型flash vs NAND型flash

FLASH是一种存储芯片,全名叫Flash EEPROM Memory,通过程序可以修改数据,即平时所说的“闪存”。 闪存可以在软件的控制下写入和擦写数据。其存储空间被分割成相对较大的可擦除单元,成为擦除块(erase block&#xff09…

嵌入式岗位笔试面试专栏 - 岗位介绍

文章目录 一、嵌入式岗位的分类二、热门领域及公司三、发展前景四、技能要求沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解嵌入岗位的工作职责 。 一、嵌入式岗位的分类 嵌入式软件工程师大致可以分为两种类型: 应用开发工程师驱动开发工程师应用工程…

【炼气境】HashMap原理以及如何使用

系列文章目录 文章目录 系列文章目录前言1、数据结构2、工作原理3、当两个对象的 hashCode 相同会发生什么?4、你知道 hash 的实现吗?为什么要这样实现?5、为什么要用异或运算符?6、HashMap 的 table 的容量如何确定?l…

PHP8内置函数中的变量函数-PHP8知识详解

在php8中,与变量相关的内置函数比较多,本文说一些比较重要的、常见的内置函数。今日着重讲解了5个,分别是:检测变量是否为空的函数empty()、判断变量是否定义过的函数isset()、销毁指定的变量的函数unset()、获取变量的类型的函数…

【力扣周赛】第 359 场周赛(选择区间型DP⭐⭐⭐⭐⭐新题型 双指针)

文章目录 竞赛链接Q1:7004. 判别首字母缩略词(模拟)Q2:6450. k-avoiding 数组的最小总和解法1——贪心哈希表解法2——数学公式 Q3:7006. 销售利润最大化⭐⭐⭐线性DP相似题目列表2008. 出租车的最大盈利(和…

2023.9.1 简单认识 JVM

目录 JVM 内存划分 本地方法栈 虚拟机栈 程序计数器 堆区 元数据区 JVM 类加载机制 加载 验证 准备 解析 初始化 类被加载的几种情况(懒汉模式 ---> 只要被用到才会被加载) 双亲委派模型 JVM 内存划分 JVM 是一个应用程序,在…

SSM(Spring-Mybatis-SpringMVC)

文章目录 1. 介绍1.1 概念介绍 2 SSM整合框架3. SSM功能模块开发4 测试4.1 业务层接口测试4.2 表现层接口测试 5.优化 -表现层数据封装6.异常处理 1. 介绍 1.1 概念介绍 SSM项目是指基于SpringSpringMVCMyBatis框架搭建的Java Web项目。 Spring是负责管理和组织项目的IOC容器和…

二、C#—第一个c#程序(2)

🌻🌻 目录 一、编写第一个C#程序1.1 使用Visual Studio创建c#程序的步骤1.2 编写第一个程序“Hello Word”1.3 c#程序的基本结构1.3.1 c#中的命名空间1.3.2 c#中的类1.3.3 c#中的程序启动器——Main方法1.3.4 c#中的标识符1.3.5 c#中的关键字1.3.6 c#中的…

Vavido IP核Independent Clocks Block RAM FIFO简述

文章目录 1 FIFO(先入先出)1.1 概念1.2 应用场景1.3 FIFO信号1.4 FIFO读写时序1.4.1 FIFO读时序1.4.2 FIFO写时序 参考 1 FIFO(先入先出) 1.1 概念 FIFO(First in First out)即先入先出队列,是…

个性化定制界面还是极简版原装界面?我的选择是……

个性化定制界面和极简版原装界面,哪一个你用起来更加顺手呢,相比之下你更喜欢哪一个?来聊一聊原因吧! 一、我的观点和选择 个性化定制界面和极简版原装界面,二者各有优缺点。 (一)极简版原装…

windows vmware17虚拟机导出、导入

我采用的是vmware17版本的虚拟机软件 直接拷贝VM虚拟机文件 导出 查看虚拟机所在路径 复制整个文件夹,可以先压缩介绍文件大小,拷贝到需要还原该虚拟机的电脑上 导入 在目的电脑上需要安装vnware17版本的虚拟机软件 直接打开vmware17, 选…

Mysql--对varchar字段用int数值来查询的问题

在工作中遇到的一个问题。就是mysql的一个表中的一个字段是varchar类型的,这个字段用来存储身份证,身份证正好是18位的。但是在根据身份证号来查询用户的时候,忘了给这个查询条件的身份证号加上’"",然后就产生了问题。…

Pinia能否替代 Vuex 的更强大状态管理工具

前序 Pinia 是 Vue.js 团队成员专门为 Vue 开发的一个全新的状态管理库,也相当于vuex5,下面关于vuex5的提案是不是觉得很像 Vuex5 的提案 Pinia和Vuex的函数 Vuex: State、Getters、Mutations(同步)、Actions(异步) Pinia: St…

【C++进阶】模板进阶

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

SpringBoot项目集成Druid

文章目录 一、前言二、Druid相关内容1、Druid简介1.1数据库连接池 2、项目集成Druid2.1、环境准备2.2、依赖准备2.3、编写配置文件2.4、测试访问 3、功能介绍3.1、查看数据源3.2、SQL监控3.3、URI监控 三、总结提升 一、前言 本文将介绍Druid的相关内容以及项目如何集成Druid&…

每日一题(复制带随机指针的链表)

每日一题(复制带随机指针的链表) 138. 复制带随机指针的链表 - 力扣(LeetCode) 思路: 由于每个链表还包含了一个random节点指向了链表中的随机节点,所以并不能直接照搬复制原链表。首先想到的暴力思路是复…