Excel 2010 VBA 入门 082 数据处理之对比两个表的数据
示例:
如图所示,该工作簿中有两个来自不同数据源的材料表,这两个表中的数据可能不同。如何使用VBA比较两张表的编号与数量,并建立一张对照表,分别列出两张表的不同:编号同时存在但数量不同;编号在其中一张表中存在,而另一张表中不存在(标注哪张表不存在)?
示例数据表
表1
编号 | 名称 | 规格 | 单位 | 数量 |
370005 | 钕铁硼 | N-35H | 公斤 | 0 |
02356250 | 0.5钢板60Si2Mn | 公斤 | 0.12 | |
02376151 | 0.1钢板 | 1Cr18Ni9Ti | 公斤 | 0.1 |
02376159 | 不锈钢板 | 0.5/1Cr18Ni9Ti | 公斤 | 0.325 |
28000810 | 六角螺栓 | 8.8M6×60 | 件 | 4 |
28000811 | 六角螺栓 | 8.8M6×60 | 件 | 11 |
28001131 | 六角螺栓 | 8.8M8×45 | 件 | 31 |
28001221 | 六角螺栓 | 8.8M8×65 | 件 | 46 |
28001231 | 六角螺栓 | 8.8M8×70 | 件 | 2 |
28001261 | 六角螺栓 | 8.8M8×80 | 件 | 6 |
28001271 | 六角螺栓 | 8.8M8×80 | 件 | 4 |
28001427 | 六角螺栓 | A4-70M10×20 | 件 | 68 |
28001511 | 六角螺栓 | M10*30 | 件 | 2 |
28001516 | 六角螺栓 | A2-70M10×30 | 件 | 2 |
28001541 | 六角螺栓 | 8.8M10×35 | 件 | 8 |
28001561 | 六角螺栓 | 8.8M10×40 | 件 | 10 |
28001566 | 六角螺栓 | A2-70M10×40 | 件 | 32 |
28001591 | 六角螺栓 | 8.8M10×45 | 件 | 3 |
28001611 | 六角螺栓 | 8.8M10×50 | 件 | 72 |
28001631 | 六角螺栓 | 8.8M10×55 | 件 | 8 |
28001641 | 六角螺栓 | 件 | 8 | |
28001741 | 六角螺栓 M10×60 | 8.8M10×60 | 件 | 10 |
28001681 | 六角螺栓 | 8.8M10×65 | 件 | 1 |
321905000130 | 螺堵M16 | 聚甲醛 | 件 | 8 |
32352120 | 电流传感器 | LTC1000-SF | 件 | 1 |
33018205 | 断路器 | 3RV1021-1HA15 | 件 | 4 |
33018206 | 继电器 | 3RV1021-4DA15 | 件 | 1 |
33018207 | 三相交流断路器 | 3RV1021-1CA15 | 件 | 1 |
33019250 | 高速断路器 | UR.6 31 | 件 | 1 |
33019356 | 5SP4小型断路器 | 5SP4292-7 | 件 | |
33019493 | 辅助连锁盒 | 3RH1911-2FA22 | 件 | 2 |
33129765 | 熔断器 | 170M2015 | 件 | 2 |
33251570 | 终端电阻 | 件 | 2 | |
33270100 | 二位三通电磁阀 | 4101049 | 件 | 2 |
33270110 | 双向脉冲电磁阀 | DC 110 | 件 | 1 |
33270120 | 双向阀 | DN 10 | 件 | 1 |
33270130 | 合成闸瓦 | HXY-65 | 件 | 8 |
33820090 | 继电器 | 6-1393809-2 | 件 | 8 |
33823031 | 继电器 | V23162-B0721-B110 | 件 | 9 |
33823032 | 继电器 | V23162-B0735-B110 | 件 | 15 |
33823033 | 继电器 | SR6ZA615 | 件 | 2 |
33829410 | 继电器底座 | RPE-6129 | 件 | 0 |
69111190 | 数字量输入模块 | DIM | 件 | 3 |
69111690 | 发光电路板 | 新加坡工程车 | 件 | 2 |
69111700 | 滚轮系统 | 304不锈钢 | 套 | 12 |
69113511 | 电源模块 | TGY24-D5 | 件 | 2 |
69113512 | 电源模块 | TGY24-D6 | 件 | 1 |
69116090 | 空气干燥器 | 件 | 1 | |
69116525 | 风机 | W2E 200-HK38-01 | 件 | 0 |
WP00000349G00 | 防尘垫(二) | 氯丁橡胶BE53642 | 件 | 16 |
WP00000666G00 | 制动柜不干胶标牌 | 0.3不干胶PVC | 件 | 1 |
WP00000825G00 | 安全绳压制 | 件 | 1 | |
36530020 | 直纹布带 | 个 | 1 | |
14290600 | 醇酸稀释剂 | 公斤 | 0.5 | |
A1902120 | 弯把刷子 | 把 | 1 | |
19021240 | 羊毛刷 | 把 | 1 | |
WA00001088G00 | 当心挤脚标识 | 件 | 4 | |
WA00001083G00 | 当心夹手和撞击标识 | 件 | 2 | |
WP00000828G00 | 毛毡1 | 件 | 2 | |
WP00000830G00 | 毛毡2 | 件 | 2 |
表2
编号 | 名称 | 规格 | 单位 | 数量 |
02356230 | 0.3钢板60Si2Mn | 公斤 | 0.07 | |
02356250 | 0.5钢板60Si2Mn | 公斤 | 0.12 | |
02376151 | 0.1钢板 | 1Cr18Ni9Ti | 公斤 | 0.1 |
02376159 | 不锈钢板 | 0.5/1Cr18Ni9Ti | 公斤 | 0.325 |
28000810 | 六角螺栓 | 8.8M6×60 | 件 | 4 |
28000811 | 六角螺栓 | 8.8M6×60 | 件 | 6 |
28001131 | 六角螺栓 | 8.8M8×45 | 件 | 31 |
28001221 | 六角螺栓 | 8.8M8×65 | 件 | 46 |
28001231 | 六角螺栓 | 8.8M8×70 | 件 | 2 |
28001261 | 六角螺栓 | 8.8M8×80 | 件 | 6 |
28001271 | 六角螺栓 | 8.8M8×80 | 件 | 4 |
28001427 | 六角螺栓 | A4-70M10×20 | 件 | 68 |
28001511 | 六角螺栓 | M10*30 | 件 | 2 |
28001516 | 六角螺栓 | A2-70M10×30 | 件 | 2 |
28001541 | 六角螺栓 | 8.8M10×35 | 件 | 8 |
28001561 | 六角螺栓 | 8.8M10×40 | 件 | 10 |
28001566 | 六角螺栓 | A2-70M10×40 | 件 | 32 |
28001591 | 六角螺栓 | 8.8M10×45 | 件 | 3 |
28001611 | 六角螺栓 | 8.8M10×50 | 件 | 72 |
28001631 | 六角螺栓 | 8.8M10×55 | 件 | 8 |
28001641 | 六角螺栓 | 件 | 8 | |
28001741 | 六角螺栓 M10×60 | 8.8M10×60 | 件 | 10 |
28001681 | 六角螺栓 | 8.8M10×65 | 件 | 1 |
321905000130 | 螺堵M16 | 聚甲醛 | 件 | 8 |
32352120 | 电流传感器 | LTC1000-SF | 件 | 1 |
33018205 | 断路器 | 3RV1021-1HA15 | 件 | 4 |
33018206 | 继电器 | 3RV1021-4DA15 | 件 | 1 |
33018207 | 三相交流断路器 | 3RV1021-1CA15 | 件 | 1 |
33019250 | 高速断路器 | UR.6 31 | 件 | 1 |
33019356 | 5SP4小型断路器 | 5SP4292-7 | 件 | |
33019493 | 辅助连锁盒 | 3RH1911-2FA22 | 件 | 2 |
33129765 | 熔断器 | 170M2015 | 件 | 2 |
33251570 | 终端电阻 | 件 | 2 | |
33270100 | 二位三通电磁阀 | 4101049 | 件 | 2 |
33270110 | 双向脉冲电磁阀 | DC 110 | 件 | 1 |
33270120 | 双向阀 | DN 10 | 件 | 1 |
33270130 | 合成闸瓦 | HXY-65 | 件 | 8 |
33820090 | 继电器 | 6-1393809-2 | 件 | 8 |
33823031 | 继电器 | V23162-B0721-B110 | 件 | 9 |
33823032 | 继电器 | V23162-B0735-B110 | 件 | 15 |
33823033 | 继电器 | SR6ZA615 | 件 | 2 |
33829410 | 继电器底座 | RPE-6129 | 件 | 0 |
69111190 | 数字量输入模块 | DIM | 件 | 3 |
69111690 | 发光电路板 | 新加坡工程车 | 件 | 2 |
69111700 | 滚轮系统 | 304不锈钢 | 套 | 12 |
69113511 | 电源模块 | TGY24-D5 | 件 | 2 |
69113512 | 电源模块 | TGY24-D6 | 件 | 1 |
69116090 | 空气干燥器 | 件 | 1 | |
69116525 | 风机 | W2E 200-HK38-01 | 件 | 0 |
WP00000349G00 | 防尘垫(二) | 氯丁橡胶BE53642 | 件 | 16 |
WP00000666G00 | 制动柜不干胶标牌 | 0.3不干胶PVC | 件 | 1 |
WP00000825G00 | 安全绳压制 | 件 | 1 | |
36530020 | 直纹布带 | 个 | 1 | |
14290600 | 醇酸稀释剂 | 公斤 | 0.5 | |
A1902120 | 弯把刷子 | 把 | 1 | |
19021240 | 羊毛刷 | 把 | 1 | |
WA00001088G00 | 当心挤脚标识 | 件 | 4 | |
WA00001083G00 | 当心夹手和撞击标识 | 件 | 2 | |
WP00000828G00 | 毛毡1 | 件 | 2 | |
WP00000830G00 | 毛毡2 | 件 | 2 |
代码
取出其中一张数据表中的所有数据,使用循环一一与另一张数据表中的数据进行比较,记录其不同处。再取出另一张数据表中的所有数据,采用相同的方法进行比较。
Option ExplicitSub 比较两表数据()Dim sht1 As WorksheetDim sht2 As WorksheetDim shtResult As WorksheetDim Rng As RangeDim row1 As LongDim rowNew As LongDim sNo As StringDim QTY As DoubleSet sht1 = Sheets("sheet1")Set sht2 = Sheets("sheet2")Set shtResult = Sheets("sheet3")rowNew = 2shtResult.Range("A2:B" & Rows.Count).ClearFor row1 = 2 To sht1.Range("A1").CurrentRegion.Rows.CountsNo = sht1.Cells(row1, 1).ValueQTY = sht1.Cells(row1, 5).ValueSet Rng = sht2.Range("A:A").Find(sNo, lookat:=xlWhole)If Rng Is Nothing ThenshtResult.Cells(rowNew, 1).Value = "'" & sNoshtResult.Cells(rowNew, 2).Value = "数据表2中不存在"rowNew = rowNew + 1ElseIf QTY <> Rng.Offset(0, 4).Value ThenshtResult.Cells(rowNew, 1).Value = "'" & sNoshtResult.Cells(rowNew, 2).Value = "两表的数量不相同"rowNew = rowNew + 1End IfEnd IfNext row1For row1 = 2 To sht2.Range("A1").CurrentRegion.Rows.CountsNo = sht2.Cells(row1, 1).ValueQTY = sht2.Cells(row1, 5).ValueSet Rng = sht2.Range("A:A").Find(sNo, lookat:=xlWhole)If Rng Is Nothing ThenshtResult.Cells(rowNew, 1).Value = "'" & sNoshtResult.Cells(rowNew, 2).Value = "数据表2中不存在"rowNew = rowNew + 1End IfNext row1
End Sub
Excel 2010 VBA 入门 082 数据处理之对比两个表的数据相关推荐
- Excel 2010 VBA 入门 095 数据处理之用数组实现分列
示例 如图所示,该表为某系统中导出的数据.由于该数据将原本的四列信息合并至一个单元格中,现希望利用数组对该数据进行分列,将其分为四列. 关键词;关注指数;升降幅度;升降位次 小胸钢托聚拢游泳衣;12; ...
- Excel 2010 VBA 入门 081 数据处理之获取不重复的数据
目录 示例 示例数据表 代码1 去除重复值(RemoveDuplicates)方法 代码2 代码3 示例 如图所示,该表为某村人口登记表.现希望得知有哪些户的居民已登记,因而希望获取"户号& ...
- Excel 2010 VBA 入门 086 数据处理之获取交叉查询结果表
目录 示例 代码 交叉汇总表 建立交叉汇总表的步骤 建立交叉汇总表的优化 示例 如图所示,该表为某公司的销售数据表.现希望建立一个汇总表,按月份和商品名汇总收入,并将月份作为列标题而商品名作为行标题. ...
- Excel 2010 VBA 入门 087 数据处理之按单列汇总多个工作表
示例 如图所示,该工作簿中包含若干个工作表,工作表中为各个学校书籍销售明细.如 何使用VBA按其工作表中的图书名称汇总各种图书的数量? 示例数据表 序号 图书名称 版 别 年版 定价 适读范围 订 ...
- Excel 2010 VBA 入门 093 数据处理之建立数组
目录 示例 代码 数组的基本概念 数组的声明 数组的赋值与数组数据的读取 Ubound和Lbound函数获取数组的上下限 ForEach---Next循环遍历数组的注意事项 计算程序运行的时间 数组处 ...
- Excel 2010 VBA 入门 088 数据处理之汇总列数不相等的多个工作表
目录 示例 代码1 合并汇总(Consolidate)方法 Array函数 Evaluate方法构造数组 代码2 示例 如图所示,该工作簿中有若干个工资表,由于每个月发放的工资项目不同,因而造成每个工 ...
- Excel 2010 VBA 入门 077 数据处理之合计汇总
目录 示例 代码1 代码2 代码3 示例 如图所示,该表为某公司年度销售表.如何使用VBA求出每个销售员的年度销售额合计以及公司月度销售合计? 销售员 1月 2月 3月 4月 5月 6月 7月 8月 ...
- Excel 2010 VBA 入门 076 数据处理之计算个人所得税
目录 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) 代码 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) (非居民个人工资.薪金所得,劳务报酬所得,稿 ...
- Excel 2010 VBA 入门 034 创建图片批注
目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...
最新文章
- Flutter开发之布局-1-Column(15)
- 攻防世界-web-unfinish-从0到1的解题历程writeup
- 618 技术特辑(二)几百万人同时下单的秒杀,为什么越来越容易抢到了?
- windows下anaconda环境激活报错CommandNotFoundError: Your shell has not been properly configured to use ‘con
- 程序员过关斩将——搞定秒杀,只需要这几步!!
- Oracle透明网关 for SQL Server
- [04-01]css组合选择器
- Mvc model验证总结
- 多个切点 boot spring_spring基于aspectJ的切点表示
- java 全局唯一id_JAVA生成全局唯一ID 使用 java.util.UUID
- Kaggle Tabular Playground Series - Jan 2022 学习笔记2(使用时间序列的线性回归)
- SQL 随机抽取样本
- iphone苹果手机ios15系统最新降级方法教程
- request.getParameter()与request.getParameterValues()的区别和使用方式
- 男人的梦想:世界名车标志
- 全面解析软文营销中的八大技巧
- qpython3使用手册图_qpython 图
- 爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录
- WEB页面播放大华摄像头视频解决方案
- Java 下载 Excel文件打不开