ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: anijoe123

[求助] 请教各位老师,如何用VBA找出两列中不同的值?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-5-19 18:33 | 显示全部楼层
莫悠悠 发表于 2014-5-19 18:13
表1的名字可能与表2的名字不一致,如何找到不一致的名单,并标出来源。
表1的名字是掌握在报账部门的基础 ...
  1. Sub Macro1()
  2.     Dim d(1 To 2) As Object, arr, i&, j&
  3.     For j = 1 To 2
  4.         Set d(j) = CreateObject("scripting.dictionary")
  5.         arr = Sheets(j).[a1].CurrentRegion
  6.         For i = 2 To UBound(arr)
  7.             d(j)(arr(i, 1)) = ""
  8.         Next
  9.     Next
  10.     For i = 2 To UBound(arr)
  11.         If d(1).Exists(arr(i, 1)) And d(2).Exists(arr(i, 1)) Then
  12.             d(1).Remove (arr(i, 1))
  13.             d(2).Remove (arr(i, 1))
  14.         End If
  15.     Next
  16.     For i = 1 To 2
  17.         With Sheets(i + 2)
  18.             .Cells.ClearContents
  19.             .[a1].Resize(d(i).Count) = WorksheetFunction.Transpose(d(i).Keys)
  20.         End With
  21.     Next
  22. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-5-19 18:34 | 显示全部楼层
请看附件
不同值的求助.rar (10.68 KB, 下载次数: 316)

TA的精华主题

TA的得分主题

发表于 2014-5-19 21:59 | 显示全部楼层
本帖最后由 frdes 于 2014-5-19 22:04 编辑
zhaogang1960 发表于 2011-2-26 14:38
Sub Macro1()
    Dim arr, brr(), d As Object, i&
    Set d = CreateObject("scripting.dictionary" ...

ReDim brr(1 To UBound(arr), 0)和brr(i,0) =arr(i,1)这个0是什么意思?




TA的精华主题

TA的得分主题

发表于 2014-5-19 22:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ReDim brr(1 To UBound(arr), 0)定义一个多行、只有一列的二维数组,完整写法:ReDim brr(1 To UBound(arr), 0 to 0),因为通常0为默认最小下标,这里就省略了
brr(i,0) =arr(i,1)——给brr第i行、第1列赋值

TA的精华主题

TA的得分主题

发表于 2014-5-20 08:37 | 显示全部楼层
zhaogang1960 发表于 2014-5-19 18:33

非常感谢超级版主赵大哥的帮忙,得研究一下怎样用到工作中

TA的精华主题

TA的得分主题

发表于 2014-5-20 22:38 | 显示全部楼层
zhaogang1960 发表于 2014-5-19 22:20
ReDim brr(1 To UBound(arr), 0)定义一个多行、只有一列的二维数组,完整写法:ReDim brr(1 To UBound(arr) ...

这个0写成1 To 1行不行?

点评

可以  发表于 2014-5-20 22:47

TA的精华主题

TA的得分主题

发表于 2014-5-23 09:35 | 显示全部楼层
本帖最后由 莫悠悠 于 2014-5-23 09:38 编辑
zhaogang1960 发表于 2014-5-19 18:33


赵大哥,再次请教:如果两个表之间没有规律,那应该如何改造脚本?
For j = 1 To 2

04.        Set d(j) = CreateObject("scripting.dictionary")

05.        arr = Sheets(j).[a1].CurrentRegion

06.        For i = 2 To UBound(arr)

07.            d(j)(arr(i, 1)) = ""

08.        Next

09.    Next
我把这个循环拆分为两个记录实现不了我的目的
表1、表2不一定是sheet1和sheet2,很多时候都有可能是sheet1和sheet6,或者是其他情况……
arr = Sheets(j).[a1].CurrentRegion,很多都是任意组合的

TA的精华主题

TA的得分主题

发表于 2016-11-7 22:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
需要用到这个,必须标记一下!

TA的精华主题

TA的得分主题

发表于 2016-11-7 23:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
将下面代码插入到相应表单的VBE窗口中。

  1. Sub GetUniqueItem()

  2.     Dim tmpRange As Range
  3.    
  4.     Set tmpRange = Cells.SpecialCells(xlCellTypeLastCell)
  5.     Set tmpRange = Range("D1:D" & tmpRange.Row)
  6.     tmpRange.FormulaR1C1 = "=IF(AND(RC1&RC2<>"""",COUNTIF(C2,RC1)=0),""#DIV/0!"","""")"
  7.     tmpRange.Value = tmpRange.Value
  8.     Set tmpRange = Cells.SpecialCells(xlCellTypeConstants, 16)
  9.     Set tmpRange = tmpRange.Offset(0, 1 - tmpRange.Column)
  10.     Range("C:C").Clear
  11.     tmpRange.Copy Range("C1")
  12.    
  13.     Set tmpRange = Cells.SpecialCells(xlCellTypeLastCell)
  14.     Set tmpRange = Range("D1:D" & tmpRange.Row)
  15.     tmpRange.EntireColumn.Delete
  16.    
  17.     Set tmpRange = Nothing
  18. End Sub
复制代码



TA的精华主题

TA的得分主题

发表于 2018-9-8 14:42 | 显示全部楼层

大神,最后的结果能不能一弹窗形式体现,不用填到表格里面,要怎么改?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 17:48 , Processed in 0.029098 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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