ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 寸有所长,尺有所短。

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-15 19:21 | 显示全部楼层
谢谢大家

回去我一定好好学习,向你们看齐。

TA的精华主题

TA的得分主题

发表于 2010-10-15 19:25 | 显示全部楼层
1、=INDIRECT("2!R"&CEILING((FIND(V6,PHONETIC(A1:T15))-1)/60,1)&"C"&MOD((FIND(V6,PHONETIC(A1:T15))-1)/3,20)+1,0)   
速度:18.76S
2、=SUMIF(OFFSET($A$1:$T$1,LOOKUP(MID($V6,1,1),{"a","b","c"},{4,9,14}),0,-5),V6,OFFSET('2'!$A$1,LOOKUP(MID($V6,1,1),{"a","b","c"},{0,5,10}),,,))
速度:24.93S
3、=SUMIF($A$1:$T$15,$V6,'2'!$A$1)
速度:26.93S
4、=INDIRECT("2!"&TEXT(SUM((A1:T15=V6)*(ROW(A1:T15)*1000+COLUMN(A1:T15))),"r0c000"),0)
速度:28.33S
5、=MIN(IF($A$1:$T$15=$V6,'2'!$A$1:$T$15))
速度:40.52S

以上公式测试环境相同,均为运算十万次所需的时间。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-15 19:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=INDIRECT("2!R"&CEILING((FIND(V6,PHONETIC(A1:T15))-1)/60,1)&"C"&MOD((FIND(V6,PHONETIC(A1:T15))-1)/3,20)+1,0)

我还没看懂,不过我想一定能很快,我这就回去试试

再次感谢zljkd007先生和kankan1030先生!

TA的精华主题

TA的得分主题

发表于 2010-10-15 19:40 | 显示全部楼层
原帖由 yyhhhbb 于 2010-10-15 19:26 发表
=INDIRECT("2!R"&CEILING((FIND(V6,PHONETIC(A1:T15))-1)/60,1)&"C"&MOD((FIND(V6,PHONETIC(A1:T15))-1)/3,20)+1,0)

我还没看懂,不过我想一定能很快,我这就回去试试

再次感谢zljkd007先生和kankan1030先生!


PHONETIC应该是有限制的,不适合你的大数据量表格。我猜测用整个区域去做运算会导致速度变慢,可对比一下采用辅助列或VBA的方式,相信速度会有提升!

TA的精华主题

TA的得分主题

发表于 2010-10-15 19:44 | 显示全部楼层

回复 12楼 kankan1030 的帖子

请问测试速度怎么测试?

TA的精华主题

TA的得分主题

发表于 2010-10-15 19:49 | 显示全部楼层
楼主朋友,要快电脑配置高点吧,我的电脑是看不出来这个有啥快慢区别。你能计时一下来说明问题吗?
要么就控制屏幕刷新次数。

[ 本帖最后由 aking9505 于 2010-10-15 19:51 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-10-15 20:09 | 显示全部楼层
原帖由 zljkd007 于 2010-10-15 19:44 发表
请问测试速度怎么测试?


Sub TestFormula()

Dim strFormula As String
Dim vRetValue As Variant
Dim lngIterations As Long, lngLooper As Long
Dim sngTimer As Single

lngIterations = 100000

strFormula = "=MAX(IF(IF(ISTEXT(A1:T15),V6)=A1:T15,'2'!A1:T15))"
sngTimer = Timer

For lngLooper = 1 To lngIterations
vRetValue = Application.Evaluate(strFormula)
Next lngLooper

MsgBox lngIterations & " took " & Format(Timer - sngTimer, "0.00") & " seconds"

End Sub
测试代码,引号中间部分为被测试的公式! 100000为重复次数,可根据实际情况自行修改!

[ 本帖最后由 kankan1030 于 2010-10-15 20:11 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-10-15 20:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 zljkd007 于 2010-10-15 19:44 发表
请问测试速度怎么测试?

同样问题关注

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-15 21:33 | 显示全部楼层
万分感谢各位的知道!
尤为感谢kankan1030先生!

公示的写法的确与运算速度有关,并不是写法简单就是最好,而应注重运算的准确性与简捷性的结合才算好!

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-15 21:48 | 显示全部楼层
=INDIRECT("2!R"&CEILING((FIND(V6,PHONETIC(A1:T15))-1)/60,1)&"C"&MOD((FIND(V6,PHONETIC(A1:T15))-1)/3,20)+1,0)   

这个公式与“文字”有关,可惜我的电脑不能运行。(好像和日语有关)

我的电脑配置并不低,只是数据太大。公式求值多达几百万个单元格,书写文本及数值上亿,
所以在用公式上要格外揣摩,
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-8 11:42 , Processed in 0.024314 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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