ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2499|回复: 9

小白求助,怎样用VBA找出两个工作表中的不同数据并提取到第一个工作表中

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-8-26 20:01 | 显示全部楼层 |阅读模式

具体要求如下面图1,请问各位老师怎么写代码才能按要求把数据提取到对应的位置

要求.png 1月.png 2月.png




头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-8-26 22:10 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-26 22:14 | 显示全部楼层
相关的附件在这里

VBA.rar

28.11 KB, 下载次数: 169

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-26 22:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
朱荣兴 发表于 2019-8-26 22:10
vba字典比对可以实现,前提是有附件

附件已经上传,请问老师具体应该怎么操作

TA的精华主题

TA的得分主题

发表于 2019-11-13 19:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
顶!!!!!!!!!!!!!!

TA的精华主题

TA的得分主题

发表于 2020-1-15 22:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub 离职员工()
  2.     Dim arr, brr
  3.     arr = ThisWorkbook.Worksheets("1月").UsedRange  '把1月份的数据存入数组
  4.     brr = ThisWorkbook.Worksheets("2月").UsedRange  '把2月份的数据存入数组
  5.     Set dic1 = CreateObject("scripting.dictionary")
  6.     Set dic2 = CreateObject("scripting.dictionary")
  7.     For i = 2 To UBound(arr)
  8.         dic1(arr(i, 1)) = ""   '把1月员工号存入字典并去重, 当然工号无重复,下面类似
  9.     Next
  10.     For j = 2 To UBound(brr)
  11.         dic2(brr(j, 1)) = ""
  12.     Next
  13.     l = 3
  14.     For k = 2 To UBound(arr) '遍历数组arr,也就是遍历1月员工信息
  15.         If Not dic2.Exists(arr(k, 1)) Then  '如果在字典dic2中不存在arr数组中的元素,也就是2月份中不存在的1月份的员工号,也就是离职员工
  16.             ThisWorkbook.Worksheets("结果").Range("A" & l).Resize(1, 5) = Application.Index(arr, k, 0) '第一次进入if结构中时把数组arr的第k行赋值给A3单元格扩展1行5列的区域,以后进入if结构类似,只不过行号加1,也就是赋值在结果表的下一行
  17.             l = l + 1   '赋值完成后行号加1,也就是下一个离职员工的信息在上一个离职员工的下一行
  18.         End If
  19.     Next
  20.     n = 3
  21.     For m = 2 To UBound(brr)   '这个循环跟上面的类似,只不过是在dic1中查找brr数组中的元素,也就是查找新入职员工
  22.         If Not dic1.Exists(brr(m, 1)) Then
  23.             ThisWorkbook.Worksheets("结果").Range("H" & n).Resize(1, 5) = Application.Index(brr, m, 0)
  24.             n = n + 1
  25.         End If
  26.     Next
  27.     iRow = ThisWorkbook.Worksheets("结果").[A3].End(xlDown).Row  '行号
  28.     With ThisWorkbook.Worksheets("结果").Range("A3:E" & iRow)  '居中并加所有边框
  29.         .HorizontalAlignment = xlCenter
  30.         .VerticalAlignment = xlCenter
  31.         .Borders(xlEdgeLeft).LineStyle = xlContinuous
  32.         .Borders(xlEdgeRight).LineStyle = xlContinuous
  33.         .Borders(xlEdgeTop).LineStyle = xlContinuous
  34.         .Borders(xlEdgeBottom).LineStyle = xlContinuous
  35.         .Borders(xlInsideVertical).LineStyle = xlContinuous
  36.         .Borders(xlInsideHorizontal).LineStyle = xlContinuous
  37.     End With
  38.     jRow = ThisWorkbook.Worksheets("结果").[H3].End(xlDown).Row
  39.     With ThisWorkbook.Worksheets("结果").Range("H3:L" & jRow)
  40.         .HorizontalAlignment = xlCenter
  41.         .VerticalAlignment = xlCenter
  42.         .Borders(xlEdgeLeft).LineStyle = xlContinuous
  43.         .Borders(xlEdgeRight).LineStyle = xlContinuous
  44.         .Borders(xlEdgeTop).LineStyle = xlContinuous
  45.         .Borders(xlEdgeBottom).LineStyle = xlContinuous
  46.         .Borders(xlInsideVertical).LineStyle = xlContinuous
  47.         .Borders(xlInsideHorizontal).LineStyle = xlContinuous
  48.     End With
  49. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2020-11-17 04:34 来自手机 | 显示全部楼层
yiye6900345 发表于 2020-1-15 22:26

好东西,解决问题

TA的精华主题

TA的得分主题

发表于 2020-12-4 09:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-12-4 21:49 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-12-14 21:23 | 显示全部楼层
方便点的就是字典比对,小白的话建议嵌套循环,先循环表,然后循环数据,在使用计数的原理,if  s=0 then  没有找的输出在什么位置 else 找到的输出什么位置,就可以实现了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 03:29 , Processed in 0.041168 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表