ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享]浅谈DICTIONARY(字典)对象

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-7-4 16:41 | 显示全部楼层
本帖已被收录到知识树中,索引项:数组集合和字典
老师,学习过程中一直问题不断,呵呵,因为自己太菜了 ,所以一直麻烦老师,对不起,但还是忍不住跟贴提问了。
为什么在   跨表不重复值提取
  1. Sub usage6_2()
  2. Application.ScreenUpdating = False
  3.     Dim r As Range, arr
  4.     Worksheets("sheet12").Select
  5.     With CreateObject("scripting.dictionary")
  6.         For Each r In Range("O1:O" & Range("a65536").End(xlUp).Row)
  7.             If Not .exists(r.Value) Then .Add r.Value, Nothing
  8.         Next
  9.         Worksheets("sheet13").Select
  10.         Cells.Clear
  11.         Range("a1").Resize(.Count, 1) = WorksheetFunction.Transpose(.keys)
  12.     End With
  13.     Application.ScreenUpdating = True
  14. End Sub
复制代码
代码中,我一直不能达到跨表的操作,而是把原表中的数据清除,复制到a列了呢,也就是仅仅是sheet13选择了一次,但数据并没有复制到sheet13中,还是表12中进行操作的。


此问题已解决,呵呵,是自己的操作有误,因为代码放在了工作表中,而没有放入模块中造成的。

[ 本帖最后由 赵文竹 于 2010-7-5 21:17 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-7-5 08:24 | 显示全部楼层

不太明白,

Private Sub CommandButton2_Click() '数据快速查找

Application.ScreenUpdating = False
Dim n  As Long, i As Long, arr, t As Single, txt As Long
t = Timer
n = [a65536].End(xlUp).Row
arr = [a1].Resize(n, 2)
With CreateObject("scripting.dictionary") '建立字典
For i = 1 To n
.Add arr(i, 1), arr(i, 2) '顺序建立字典内容
Next


arr = [d1].Resize(n, 1)

For i = 1 To UBound(arr)
arr(i, 1) = .Item(arr(i, 1)) '在字典中按key取item
Next
End With

[e1].Resize(UBound(arr), 1) = arr
Application.ScreenUpdating = True
MsgBox "查找完成,用时" & Timer - t & "秒!" '速度还可以
End Sub
老师上面的这句代码arr = [d1].Resize(n, 1),没有太明白意思。如果是要确定数组的容量。那么完全可以ARR(20000,1)或我搞个G列,我拉个20000行,但是这样的话E列到后来就是空白。所以不太明白这句的含义,是不是确定一个KEY范围?最后是请老师能把上面的代码全解释一下。谢谢!!!

TA的精华主题

TA的得分主题

发表于 2010-7-5 10:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-7-5 17:14 | 显示全部楼层
啃到了应用示例9,感觉好难,都有点坚持不下去想退缩的想法,在这里鼓励一下自己,坚持,加油……

TA的精华主题

TA的得分主题

发表于 2010-7-5 18:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
示例10的代码   提示“方法和数据成员未找到”      该如何修改,.AddComment  是什么意思,我把AddComment改为.add也出现同样的提示
版主或路过的高手,请帮忙看看!

TA的精华主题

TA的得分主题

发表于 2010-7-5 22:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 northwolves 于 2007-9-9 00:13 发表
应用实例11 获取中文的拼音字母Function pinyin(ByVal mystr As String, Optional types As Byte = 0) As StringDim temp   As String, i As Long, j As Long, a, bWith CreateObject("Scripting.Dictiona ...

本示例中定义自定义函数时的参数   Optional types As Byte = 0   是什么意思?

TA的精华主题

TA的得分主题

发表于 2010-7-6 19:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 zhqang 于 2009-1-27 09:37 发表
455299

我也遇到同样的问题,期待答案!!

TA的精华主题

TA的得分主题

发表于 2010-7-7 19:00 | 显示全部楼层
原帖由 赵文竹 于 2010-7-6 19:30 发表

我也遇到同样的问题,期待答案!!

呵呵,问题解决把这句改为   .AddComment str_Temp, ""       dic.add str_temp,""     即可。

TA的精华主题

TA的得分主题

发表于 2010-7-17 22:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢楼主的辛苦整理,学习了。

TA的精华主题

TA的得分主题

发表于 2010-7-30 02:21 | 显示全部楼层
做记号,好用,谢谢楼主。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-28 07:21 , Processed in 0.034594 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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