对比2个表数据
时间:2022-07-22
本文章向大家介绍对比2个表数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在学会了If、For语句,了解了Range等VBA一些对象后,Excel里的大多数的问题应该都可以解决。
只要不停的用For循环,If语句判断,不去考虑效率的情况下,确实是这样的,今天用一个实际经常碰上的问题来试试这种简单的处理方法。
假设有2列数据,现在需要对比列C与列A的数据,找出列C中不在列A中出现的数据,并输出到E列:
代码实现:
Sub CompareData()
Dim arrA() As Variant
Dim arrC() As Variant
Dim rowA As Long
Dim rowC As Long
'获取A列和C列的最后一行行号
rowA = Cells(Cells.Rows.Count, 1).End(xlUp).Row
rowC = Cells(Cells.Rows.Count, 3).End(xlUp).Row
'将A列和C列的数据存放到数组中
arrA = Range("A1").Resize(rowA, 1).Value
arrC = Range("C1").Resize(rowC, 1).Value
'声明存储结果的数组
Dim result() As Variant
'数组使用一定要明确定义大小
'结果数组肯定不会超过C列的数据数量,所以可以定义结果行的最大下标为rowC
ReDim result(1 To rowC, 1 To 1) As Variant
'记录标题
result(1, 1) = arrC(1, 1)
'记录结果数据的个数
Dim resultCount As Long
resultCount = 1 '标题占用1个
'用循环找出列C中不在列A中出现的数据
Dim i As Long, j As Long
'数据是从第2行开始的
For i = 2 To rowC
'判断C列的每一个数据在A列中是否出现了
For j = 2 To rowA
'判断是否相同
If arrA(j, 1) = arrC(i, 1) Then
'如果相同就可以提前退出A列的循环了
'Exit For退出最近的那个For循环
Exit For
End If
Next
'如果A列不是Exit For结束的,这时候j的值会等于rowA+1
If j = rowA + 1 Then
'说明是在A列没有出现的数据,记录下来
resultCount = resultCount + 1 '结果的数量增加1
result(resultCount, 1) = arrC(i, 1)
End If
Next
'输出结果
Range("E1").Resize(resultCount, 1).Value = result
End Sub
基本上只用了For、If就可以完成这个任务,但这种是没有考虑到效率的,数据量一旦多了,就会发现执行速度明显变慢!
但作为新手能熟练运用这些解决碰到的问题已经不错了,熟练运用这些是基础,而提高效率的方法在熟练运用基本语句之后,是比较简单的。
- 使用sklearn做特征工程
- 【专业技术】CSS作用及用法
- 生产环境sql语句调优实战第六篇(r2笔记91天)
- 关于分区表的move操作(r2笔记90天)
- 简单分析oracle的数据存储(r2笔记89天)
- 机器学习线性分类算法:感知器原理
- 通过shell脚本来查看Undo中资源消耗高的sql(r2笔记88天)
- 关于分页查询的优化思路(r3笔记第7天)
- 用机器学习方法对影评与观影者情感判定
- 关于查看文件的几个小命令(r3笔记第6天)
- 关于纠结的recycle pool的设置(r3笔记第5天)
- 融会贯通学习trigger(r2笔记第4天)
- 完整的R语言预测建模实例-从数据清理到建模预测
- 利用回归模型预测数值型数据(代码)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法