ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 使用数组字典查同

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-22 13:39 | 显示全部楼层
本帖最后由 ykcbf1100 于 2024-4-22 13:40 编辑
天地一相 发表于 2024-4-22 13:16
请教你一个问题,VBA数组,行列是不是都是从1开始的,有人说从0,把我弄糊涂了。谢谢

一维数组下标一般为0,如Array函数的下标就是0,但st=[{1,2,3}],这个st数组下标却是1
二维数组下标一般为1,如arr=[a1].resize(r,c),这个数组arr下标就是1

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-22 15:19 | 显示全部楼层
ykcbf1100 发表于 2024-4-22 13:39
一维数组下标一般为0,如Array函数的下标就是0,但st=[{1,2,3}],这个st数组下标却是1
二维数组下标一般 ...

请教一下,我写了段代码,请看看哪里不对。我是想把数组里符合条件判断的数据填装进一个新的数组。
截图.PNG

TA的精华主题

TA的得分主题

发表于 2024-4-22 15:56 | 显示全部楼层
本帖最后由 ykcbf1100 于 2024-4-22 15:58 编辑
天地一相 发表于 2024-4-22 15:19
请教一下,我写了段代码,请看看哪里不对。我是想把数组里符合条件判断的数据填装进一个新的数组。

redim和ReDim Preserve,这二个数组是不一样的。感觉ReDim Preserve这个没必要的。if k=1 then这个判断直接去掉。前面定义一个myarr数组,比如:redim myarr(1 to 100000,1 to 26)即可。另外,ReDim Preserve这个还会拖累速度。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-22 16:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykcbf1100 发表于 2024-4-22 15:56
redim和ReDim Preserve,这二个数组是不一样的。感觉ReDim Preserve这个没必要的。if k=1 then这个判断直 ...

好的,谢谢,我尝试下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-22 16:41 | 显示全部楼层
ykcbf1100 发表于 2024-4-22 15:56
redim和ReDim Preserve,这二个数组是不一样的。感觉ReDim Preserve这个没必要的。if k=1 then这个判断直 ...

谢谢。按你说的,搞定了。原来200秒的,现在3.8秒!美死了

TA的精华主题

TA的得分主题

发表于 2024-4-22 16:45 | 显示全部楼层
天地一相 发表于 2024-4-22 16:41
谢谢。按你说的,搞定了。原来200秒的,现在3.8秒!美死了

有成就感了吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-22 17:15 | 显示全部楼层

是啊,真没想到自己能折腾出这样复杂的东西来。刚把各个部分组装完成做了一个测试,速度提高了200倍。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-23 09:29 | 显示全部楼层
ykcbf1100 发表于 2024-4-21 13:48
字典是按行来的,即每一行数据都要字典重新来一次。说下原理吧,对行进行循环,先对数组arr字典排重,然后 ...

又看了你的解答和代码,对字典始终没领悟理解。现在只用数组,速度也飞快。不知道若使用字典,还能有多大提速空间。在数组循环的测试中我观察到一个现象。如,我一行6个在5-26循环比对,第1个找到退出比对时,我记录了位置,想着第2个就无需在第1个已经找过的区域浪费时间,直接就从第1个退出时记录点的下一个位置开始。没想到,这样反而耗时增加了。结论是,让这6个位置把右侧全部循环反而更快。数组是快,但中途想暂停可就难了,没反应。找到办法做了暂停按钮。

TA的精华主题

TA的得分主题

发表于 2024-4-23 09:38 | 显示全部楼层
天地一相 发表于 2024-4-23 09:29
又看了你的解答和代码,对字典始终没领悟理解。现在只用数组,速度也飞快。不知道若使用字典,还能有多大 ...

处理数据,字典和数组都是非常重要的,你一定要学会,用字典少不了数组。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-23 10:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ykcbf1100 发表于 2024-4-23 09:38
处理数据,字典和数组都是非常重要的,你一定要学会,用字典少不了数组。

数组经过这一次,似乎入门了,知道咋写了,效果杠杠的。字典得努力学习下,模仿练习下,看能不能掌握学会。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-6 08:25 , Processed in 0.048396 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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