ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-5-18 21:22 | 显示全部楼层
本帖已被收录到知识树中,索引项:数组集合和字典
果果V5 发表于 2012-6-15 13:17
学习一下花哥的太极字典,无招胜有招!

“高手谦虚,是因为心虚,心虚是因为知己!”----很认同这一句!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-18 22:31 | 显示全部楼层
e表格学习 发表于 2015-5-18 21:10
3、“2012年感动中国人物评选”表:老师能否增加几句语句,使得我们初学者可以按F8逐步运行语句?(因为不在窗口里观察逐步运行结果,逻辑关系“乱”得不好理解啊。)


感谢你的好评。让我们一起努力,让论坛更美好。

关于“逐步运行语句”,可能我的理解还不到位,供参考:
有些程序不能用F8启动它,但可以设置断点或插入Stop语句,让程序运行到该外停下来,然后可以用F8逐语句运行它。

QQ截图20150518222903.jpg

TA的精华主题

TA的得分主题

发表于 2015-5-19 14:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
山菊花 发表于 2015-5-18 22:31
感谢你的好评。让我们一起努力,让论坛更美好。

关于“逐步运行语句”,可能我的理解还不到位,供参 ...

按照山总版的指导做了,F8可以逐步运行,比之前“目瞪口呆”好多了,可以看到运行步骤了。
但是,由于始终看不到字典和数组,看不到字典和数组的内部变化,所以,还是不能清晰明了地学习、理解。
这或许注定就是一个遗憾了?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-19 15:08 | 显示全部楼层
1、打开本地窗口。
2、在程序中插入测试代码,如:
debug.print ubound(arr)
debug.print arr(10,1)
等。
根据需要,想看什么,写什么。

TA的精华主题

TA的得分主题

发表于 2015-7-8 15:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-7-8 17:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-7-8 17:04 | 显示全部楼层
卡通界面,果然是少年班! 看起来就觉得那么难了

TA的精华主题

TA的得分主题

发表于 2015-10-7 21:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-11-4 12:03 | 显示全部楼层
本帖最后由 e表格学习 于 2015-11-4 14:03 编辑

山总您好!下面的问题,应该是VBA菜鸟的普遍问题,即关于变量的“变来变去、扑朔迷离”的问题。
再次深入学习您的“太极字典”时,表26“第一次练习”中就出现了上述问题,似懂非懂,很让人难受:
下面程序中,n=m为什么不能“省略”不写?为什么省略后会报错?
原程序(部分):
  1. For i = 4 To UBound(Brr) '循环读取5月份数据
  2. If Not dic1.Exists(Brr(i, 2) & Brr(i, 3)) Then '判断 Brr(i, 2) & Brr(i,3) 在字典dic1中是否存在,如果不存在,则:
  3.             If dic2.Exists(Brr(i, 2) & Brr(i, 3)) Then '再判断Brr(i, 2) & Brr(i,3) 在字典dic2中是否存在,如果存在,则:
  4.                 n = dic2(Brr(i, 2) & Brr(i, 3)) '返回"名称 & 规格"对应的序号
  5.             Else
  6.                 m = m + 1
  7.                 dic2.Add Brr(i, 2) & Brr(i, 3), m '将"名称 & 规格"添加到第二个字典中,条目为一序号。
  8.                 ReDim Preserve Crr(1 To 4, 1 To m)
  9.                 Crr(1, m) = Brr(i, 2) '将名称存储到数组Crr()第1行
  10.                 Crr(2, m) = Brr(i, 3) '将规格存储到数组Crr第2行
  11.                 n = m
  12.             End If
  13.             Crr(3, n) = Crr(3, n) + Brr(i, 4) '汇总数量,保存到数组Crr第3行
  14.             Crr(4, n) = Crr(4, n) + Brr(i, 5) '汇总金额,保存到数组Crr第4行
  15.         End If
  16.     Next
复制代码

注释掉n = m的修改后的程序:
For i = 4 To UBound(Brr) '循环读取5月份数据
If Not dic1.Exists(Brr(i, 2) & Brr(i, 3)) Then '判断 Brr(i, 2) & Brr(i,3) 在字典dic1中是否存在,如果不存在,则:
            If dic2.Exists(Brr(i, 2) & Brr(i, 3)) Then '再判断Brr(i, 2) & Brr(i,3) 在字典dic2中是否存在,如果存在,则:
                m = dic2(Brr(i, 2) & Brr(i, 3)) '返回"名称 & 规格"对应的序号
            Else
                m = m + 1
                dic2.Add Brr(i, 2) & Brr(i, 3), m '将"名称 & 规格"添加到第二个字典中,条目为一序号。
                ReDim Preserve Crr(1 To 4, 1 To m)
                Crr(1, m) = Brr(i, 2) '将名称存储到数组Crr()第1行
                Crr(2, m) = Brr(i, 3) '将规格存储到数组Crr第2行
                'n = m
            End If
            Crr(3, m) = Crr(3, m) + Brr(i, 4) '汇总数量,保存到数组Crr第3行
            Crr(4, m) = Crr(4, m) + Brr(i, 5) '汇总金额,保存到数组Crr第4行
        End If
    Next
山总的“太极字典少年班”是菜鸟学习字典的最好的启蒙教程,没有之一!
(我认为,此“太极”的某些部分,对于有些非菜鸟们也并不是一件容易学习的事情,有难度啊。)
山总赐教,人之幸事。
上述问题已解决。参考链接:
http://club.excelhome.net/thread-1239491-1-1.html

TA的精华主题

TA的得分主题

发表于 2015-11-4 12:48 | 显示全部楼层
楼主自己慢慢搞懂了:
按楼主的做法,m将不会保持在”最大值“,其恶果是:当第二个字典中有新增项目时,m=m+1结果不正确,会造成数组Crr列数的混乱不堪!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 07:23 , Processed in 0.040740 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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