ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

正松舒,慢匀稳——太极字典少年班

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-25 15:26 | 显示全部楼层
本帖已被收录到知识树中,索引项:数组集合和字典
感谢,好好学习一下。

TA的精华主题

TA的得分主题

发表于 2017-12-12 10:54 来自手机 | 显示全部楼层
б(*`)留个标记

TA的精华主题

TA的得分主题

发表于 2017-12-13 10:46 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
留下来学习,谢谢

TA的精华主题

TA的得分主题

发表于 2018-6-14 23:40 | 显示全部楼层
老师的这个图文并茂的字典,看得有点感动,真心感谢老师的分享

TA的精华主题

TA的得分主题

发表于 2018-10-24 13:15 | 显示全部楼层
山菊老师,您的太极字典少年班里帖子里的:
Private Sub Worksheet_Activate() '激活工作表 Sheet12 时运行本程序
    On Error Resume Next
    Set d = CreateObject("Scripting.dictionary") '创建一个字典,命名为 d
    Arr = Sheet11.Range("a2:b10").Value    '将 Sheet11 数据保存到数组 Arr()中
   
    '以“使用人”为关键字,将数组 Arr() 数据添加到字典 d 中。
    For i = 1 To UBound(Arr)
        d.Add Arr(i, 1), Arr(i, 2)
        If d.exists(Arr(i, 1)) Then '当字典中存在相同关键字时,发生错误
        'MsgBox Err
            Err.Clear
            'MsgBox Err
            d(Arr(i, 1)) = d(Arr(i, 1)) & ", " & Arr(i, 2)
        End If
    Next
   
    '继续,以“号码”为关键字,将数组 Arr() 数据添加到字典 d 中。
    For i = 1 To UBound(Arr)
        d.Add Arr(i, 2), Arr(i, 1)
        If Err <> 0 Then '当字典中存在相同关键字时,发生错误
            Err.Clear
            d(Arr(i, 2)) = d(Arr(i, 2)) & ", " & Arr(i, 1)
        End If
    Next
   
   
End Sub
这个代码找中Err代表什么呀,也没有找到任何的定义,怎么就突然能指代key了呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-24 13:50 | 显示全部楼层
shenzewen89 发表于 2018-10-24 13:15
山菊老师,您的太极字典少年班里帖子里的:
Private Sub Worksheet_Activate() '激活工作表 Sheet12 时运 ...

注意,过程前面有一行代码:On Error Resume Next
它的作用是启动一个错误处理程序。
Err是一个对象,一个包含错误信息、管理错误信息的对象,“Err<>0”是一个省略写法,完整写法是“Err.Number<>0”。
Err.Number返回的结果是错误的代码,不同的代码对应不同的错误,如果代码为0,表示无错误。
更多详细信息,请按F1打开帮助,搜索“On Error”。

TA的精华主题

TA的得分主题

发表于 2018-10-25 10:06 | 显示全部楼层
山菊花 发表于 2018-10-24 13:50
注意,过程前面有一行代码:On Error Resume Next
它的作用是启动一个错误处理程序。
Err是一个对象, ...

我明白了~~谢谢山菊老师

TA的精华主题

TA的得分主题

发表于 2018-10-25 15:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
说的很细感谢分享

TA的精华主题

TA的得分主题

发表于 2018-11-16 10:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
老师 下面代码中为何要 ( If Not ds.Exists(Arr(i, 1)) Then)这个判断啊.字典本来就不会存储重复的关键字啊! 请老师指点一下谢谢
Sub 拆分()
    Dim pp1$, pp2$, nRow%, ds, Brr(), s(1 To 3) As Integer
    Set ds = CreateObject("scripting.dictionary")
    pp1 = Join(WorksheetFunction.Transpose(Range(Range("g2"), Range("g1").End(xlDown))), ",")
    pp2 = Join(WorksheetFunction.Transpose(Range(Range("h2"), Range("h1").End(xlDown))), ",")
    nRow = Range("a1").End(xlDown).Row
    Arr = Range("a1:a" & nRow)
    ReDim Brr(1 To nRow, 1 To 3)
    For i = 2 To nRow
        If Not ds.Exists(Arr(i, 1)) Then
            ds(Arr(i, 1)) = ""
            If pp1 Like "*" & Left(Arr(i, 1), 2) & "*" Then
                s(1) = s(1) + 1
              Brr(s(1), 1) = Arr(i, 1)
            ElseIf pp2 Like "*" & Left(Arr(i, 1), 2) & "*" Then
                s(2) = s(2) + 1
                Brr(s(2), 2) = Arr(i, 1)
            Else
                s(3) = s(3) + 1
                Brr(s(3), 3) = Arr(i, 1)
            End If
        End If
    Next
    Range("c2:e" & nRow) = Brr
End Sub       

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-17 21:24 | 显示全部楼层
xiao0527 发表于 2018-11-16 10:59
老师 下面代码中为何要 ( If Not ds.Exists(Arr(i, 1)) Then)这个判断啊.字典本来就不会存储重复的关键字 ...

说得对,字典本来就不会存储重复的关键字。有无这句,对于字典不会发生什么改变,但对于数组s、Brr,结果就不同。
试试把这行及对应的End If注释掉,对比一下结果便知。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 23:14 , Processed in 0.040862 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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