ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

每页100万行用select case分类超慢,如何优化

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-13 15:38 | 显示全部楼层
huang1314wei 发表于 2017-8-13 09:58
没有附件,不知道你在说什么

根据weight来给分类,给cate赋值,weight 0-1之间,cate为1,1-2之间cate为2,...,4-5为5,weight>5以上cate为6,用for + select case很简单,但是2个sheet接近200万行很慢,所以不知道有什么更好的方法。wieght是带两位小数的。
不需要具体代码,只要指导一下大致的方法就行。多谢

vendorweightcate
a3.00
a2.00
a2.00
a10.00
b6.00
b10.00
b10.00
b3.00
c9.00
c5.00
c1.00
c9.00
c9.00
b2.00
b2.00
b3.00
b4.00
b2.00
a4.00
a7.00
a8.00

TA的精华主题

TA的得分主题

发表于 2017-8-13 15:43 | 显示全部楼层
pyfans 发表于 2017-8-13 15:28
多谢,我去研究一下

不同的条件,可以使用多个sql。。。

TA的精华主题

TA的得分主题

发表于 2017-8-13 15:51 | 显示全部楼层
pyfans 发表于 2017-8-13 15:27
多谢,这个我去研究一下。

另外,请问,如果用vba读取csv文件处理数据,csv里的数据可以超过500万行吗 ...

不管怎么样都不是长久之计

你这个级别的数据就应该找你们IT部门,弄个SQL数据库

TA的精华主题

TA的得分主题

发表于 2017-8-13 16:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
pyfans 发表于 2017-8-13 15:38
根据weight来给分类,给cate赋值,weight 0-1之间,cate为1,1-2之间cate为2,...,4-5为5,weight>5以上 ...

dim t&,weight#
t = Int([weitht])+1
If t > 6 then t = 6

这样应该速度很快的。

TA的精华主题

TA的得分主题

发表于 2017-8-13 17:44 | 显示全部楼层
pyfans 发表于 2017-8-13 15:38
根据weight来给分类,给cate赋值,weight 0-1之间,cate为1,1-2之间cate为2,...,4-5为5,weight>5以上 ...

不用那么多判断,用一个判断条件即可,另外使用数组不要使用单纯的单元格循环

TA的精华主题

TA的得分主题

发表于 2017-8-13 17:49 | 显示全部楼层
本人也倾向于数据库,电子表格是用于计算的,一般情况下2003的65536也是用不足的,故2003使用是很轻巧的,而10万、20万等等也是偶尔发生,2010有104万行,但2010太笨重,好多操作在2003是很方便的,但到2010总是提示系统资源不足。
而楼主居然要用足,且用2个表,这还怎么工作啊?个人认为,按你的数据量,恐怕小型数据库也不够吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-13 17:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhangzhang21 发表于 2017-8-13 15:51
不管怎么样都不是长久之计

你这个级别的数据就应该找你们IT部门,弄个SQL数据库

是,这是正解。但是it一直拖,拖了一年了。

TA的精华主题

TA的得分主题

发表于 2017-8-13 19:10 | 显示全部楼层
pyfans 发表于 2017-8-13 15:27
多谢,这个我去研究一下。

另外,请问,如果用vba读取csv文件处理数据,csv里的数据可以超过500万行吗 ...
  1. CSV好像并没有行限制,我几过千万行的
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-13 19:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2017-8-13 16:08
dim t&,weight#
t = Int([weitht])+1
If t > 6 then t = 6

对,单条件确实快多了。配合数组,刚才试了300万,才10秒不到,赞!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-13 19:22 | 显示全部楼层
huang1314wei 发表于 2017-8-13 17:44
不用那么多判断,用一个判断条件即可,另外使用数组不要使用单纯的单元格循环

多谢,刚才试着用了一下数组,超快!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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