ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] Excel公式CPU占有率如何计算?vlookup和index+match哪个更耗费资源?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-7 22:08 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
RT,在处理一个7000行×50列的数据表格时,大量使用了vlookup,Excel非常看,听论坛的老师们说,VLOOKUP引用了一个很大的数组,所以很耗费资源,而用index+match只会引用特定列,会少用很多资源;但实际将所有vlookup替换成index+match后,并没有发现有改观,所以想咨询下Excel在处理公式时,到底怎么计算资源的?公式达到什么程度会很卡?

TA的精华主题

TA的得分主题

发表于 2019-7-8 00:06 | 显示全部楼层
你这数据太多肯定慢,用VBA吧,
公式应该是一个个内置VBA函数,只要有一点改动或刷新公式就会整个运行一次处理(50*7000=350000)35万个单元格,而每处理个单元格又有170多个属性和方法要调用一次,所以算下来就很厉害了,个人刚觉超过1000行的都不适合用公式,特别是VLOOKUP这种调用好多单元格的公式。

TA的精华主题

TA的得分主题

发表于 2019-7-8 07:20 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-7-8 08:12 | 显示全部楼层
才7000行就卡,也许有别的问题,vlookup并没有这么小气,还是发附件或者截图发公式出来瞅一瞅吧

TA的精华主题

TA的得分主题

发表于 2019-7-8 12:48 | 显示全部楼层
本帖最后由 象山海鲜 于 2019-7-8 13:58 编辑
wuxianyu86 发表于 2019-7-8 00:06
你这数据太多肯定慢,用VBA吧,
公式应该是一个个内置VBA函数,只要有一点改动或刷新公式就会整个运行一次 ...

请不要误导新人~!
1.程序员再傻,也不会把不要用的属性和方法都去调用一遍,所以设置的运算机制绝对不是像你说的那样~!
2.引用和数组的误区。如果能用引用就别用数组型的数据~!    引用只是一个标识,并不加载数据到内存,只有用到的数据才回去加载~;数组则不同,他的数据是全部加载到内存的。
   
     例 1) =vlookup("海鲜",A:GG,2,) ,实际加载的数据最多是A列,因为要求查找的区域就这么大,何况他还会忽略真空单元格,实际加载的数据更少~,我估计,他也是每个引用去判断,不用加载的!
             返回的结果是直接调用相对位置的一个单元格引用的值,,并不是全部都加载~!所以不会不存在那么多的运算量,以及内存占用问题~!
     例 2) =vlookup("海鲜",if({1,0},A:A,GG:GG),2,) 这里的if({1,0},A:A,GG:GG) 是数组,且是转换数据后的数组,真空单元格也转成了0值,这些都是直接加载内存的~!
              所以这样的套路一般都不建议用~!
3.运算量的问题,运算次数越多,占用内存越多,复杂的公式,重复次数越多,肯定越慢。简单的运算不存在卡的,除非是电脑配置太差~!
   单元格格式、条件格式等等,都是要运算的,所以如果这些多了,肯定影响速度~!
4.存储的数据多少问题。如果数据多,在打开工作簿时原始的解析和加载的数据本来就多,能不卡吗?
5.还有函数的选择上的问题,如果可以尽量不要使用易失函数,且尽量不要同时打开有很多易失函数的工作簿~!
     易失函数牵一发而动全身,如果在单元格内更改下数据会触发全部的易失函数的重新运算,包括别的工作簿的易失函数公式~!
6.对于vba的运算速度比函数快的误区!一般用函数,工作簿都是开启自动运算模式,而vba只运算一次就停止,就是触发的一次~,
       如果也像函数一样,实时更新的话,vba估计比函数还要慢~!
7.每个存在都有它的意义,vba可以函数不能的功能,函数却不能代替vba~,所以vba更灵活。
     毕竟函数不能改变工作簿内的其他,只能运算结果,但是函数门槛低,稍稍学下,就能实际应用了。
      反之vba可不是那么容易学会的,有很多函数、结构、语句、属性、方法.....,学习不容易啊,学精更难~!

所以不要说谁一定好那个一定不好,看问题要全面,寸有所长尺有所短,只要适合就好~!

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-7-8 13:07 | 显示全部楼层
本帖最后由 micch 于 2019-7-8 13:27 编辑

版主大人不偏不倚,其实我还是想对函数吹一下的,函数更适于日常应用解决问题,复杂的问题不过是多加一些辅助就能解决。vlookup,sumif什么的整列引用并不卡,函数能做到的事,代码肯定不会更快,代码的优势在于解决微软工程师没考虑到的问题,但函数其实能解决大部分问题了,很多人觉得函数解决不了用代码,其实可能是不知道函数正确的打开方式。如果微软工程师连几千的数据都搞不定,Excel还设计100万*1万那么大区域干嘛

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-9 00:25 来自手机 | 显示全部楼层
通过任务管理器,看到的是Cpu占满了,内存到没满,我电脑是一个I7 内存16G,很奇怪,为啥对cpu占用更依赖呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-13 08:14 | 显示全部楼层
micch 发表于 2019-7-8 13:07
版主大人不偏不倚,其实我还是想对函数吹一下的,函数更适于日常应用解决问题,复杂的问题不过是多加一些辅 ...

那在VBA里面大量引用EXCEL公式会不会是个好的选择

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-13 08:17 | 显示全部楼层
象山海鲜 发表于 2019-7-8 12:48
请不要误导新人~!
1.程序员再傻,也不会把不要用的属性和方法都去调用一遍,所以设置的运算机制绝对不 ...

感谢版主,不过一直不明白,感觉经常EXCEL对CPU的占用远远大于对内存的占用,通过任务管理器可以看出来,搞不清楚原因是啥;理论上数据缓存都是到内存的,咋会对算力要求那么高呢

TA的精华主题

TA的得分主题

发表于 2019-7-13 12:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
7000行×50列=350,000個公式
1) 用vlookup就卡, 不用問, vba是首選, 只是無法即時更新
2) 若vlookup出來的資料還被其它公式引用, 一動干戈, 千軍萬馬滾黃沙
3) 引用的來源資料, 若設為有限範圍, 應有所改善, 但若資料多到一定程度, 意義也不大

只要開啟檔案或更動任意數據, 一直顯示計算中.....就考慮其它方法吧!!!


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 00:30 , Processed in 1.050364 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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