ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 自动重算、易失函数与IS类函数对参数多维之返回结果影响探讨(更新最新测试结果)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-10-18 18:18 | 显示全部楼层
本帖已被收录到知识树中,索引项:ISERROR
关于RAND()和NOW()的区别,哪个高手能解析一下,期待!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-18 18:28 | 显示全部楼层
bluexuemei 发表于 2011-10-18 17:18
关于RAND()和NOW()的区别,哪个高手能解析一下,期待!

A1输入=rand()
A2输入=now()

触发一下工作表或按F9或者在任意单元格进行复制粘贴操作,看看哪个变。这就是区别。

点评

这样看似乎他们一样的吧,还是一个能强制让数组公式联合区域的每个单元格都重新计算来区别吧,呵呵  发表于 2011-11-20 22:03

TA的精华主题

TA的得分主题

发表于 2011-10-18 18:38 | 显示全部楼层
本帖最后由 bluexuemei 于 2011-10-18 19:04 编辑

now()其实也会变,按F9似乎没有变化,那是因为它的时间以分钟为单位,到下一分钟显示值才会变,其实它一直在变化的

TA的精华主题

TA的得分主题

发表于 2011-10-18 18:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 bluexuemei 于 2011-10-18 19:03 编辑

is类函数,RAND(),复制粘贴在这里的共同点,就是引发自动重算。不解的是为什么NOW()不可以?

TA的精华主题

TA的得分主题

发表于 2011-11-8 00:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习了一下,还真挺神奇的!

TA的精华主题

TA的得分主题

发表于 2011-11-16 10:29 | 显示全部楼层
还是有点看不懂,先收藏了,慢慢研究来

TA的精华主题

TA的得分主题

发表于 2011-11-20 22:10 | 显示全部楼层
bluexuemei 发表于 2011-10-18 18:40
is类函数,RAND(),复制粘贴在这里的共同点,就是引发自动重算。不解的是为什么NOW()不可以?

我还是认为引发的重算的规模和时机是不同的,易失性应该是在某种触发条件下(比如按F9)导致包含易失性函数的公式进行重算。RAND这里体现的重算是一个数组公式在联合区域的赋值过程中进行的重算,更微观的时间片段。

点评

但这还是没法解释RAND和NOW的区别  发表于 2011-11-20 22:42

TA的精华主题

TA的得分主题

发表于 2011-11-20 22:55 | 显示全部楼层
本帖最后由 胡剑0227 于 2011-11-20 23:05 编辑

恩,我只是解释了它们不同的表现,至于它们为什么不同?
我觉得本来就是不同的函数么,不同很正常么,呵呵{:soso_e113:}

==============================================================
我也思路紊乱了,呵呵。我觉得它们虽然同为易失性函数,但这里RAND表现的特性并不是易失性共有的性质么,所以NOW在这里不具备RAND函数的特性也正常。

TA的精华主题

TA的得分主题

发表于 2011-11-22 14:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 胡剑0227 于 2011-11-22 16:08 编辑

刚刚把一楼的附件看完,文字还没有看过。这个题和数组班第一课时的一个练习极为相似,当时的解释是VLOOKUP功能比较强大,两个参数同时进行数组化就“梗塞”了,吃不消,因此解决的思路就是让VLOOKUP函数分节拍消化。数组班提供的思路是用INDEX充当第3参数。

IS类函数的问题以前也碰到,很奇怪,但没能从本质解释清楚,结合我刚刚发的那个帖(RAND\ROW\COLUMN)的帖,我觉得只要迫使数组公式联合区域的每个单元格都进行重算就能达到分节拍消化的结果。

至于附件两个工作表,第一个工作表的问题我觉得和第二个工作表的问题有很大不同,第一个工作表是引用的区域使用了易失性函数NOW,这个真的有点类BUG,在2003的表现和2007很不同,10没去测试。2003中直接用三键方式录入时就得到预期的效果,07需要F9一下,可恨的是在07中如果进行剪切单元格的操作又会回到初始录入公式的结果。这个就显得很不可控。

贴几个公式,正好利用ROW和COLUMN,呵呵。
导致重算.jpg
从左到右公式依次为:

  1. =IF(ISBLANK(A:A),SUM(ROW()))
复制代码

  1. =IF(RAND(),SUM(ROW()))
复制代码

  1. =IF(ISODD(ROW(1:4)^0),SUM(ROW()))
复制代码

  1. =IF(INDEX(ROW(1:4),ROW(1:4)),SUM(ROW()))
复制代码

  1. =IF(INDEX(ROW(1:4),ROW(1:4)),SUM(ROW()),INDEX(ROW(1:4),ROW(1:4)))
复制代码

  1. =IF(IF({1},INDEX(ROW(1:4),ROW(1:4))),SUM(ROW()))
复制代码

  1. =IF(ROWS(INDIRECT("A"&ROW(1:4))),SUM(ROW()))
复制代码

  1. =IF(ROWS(OFFSET(A1,ROW(1:4),)),SUM(ROW()))
复制代码

2003-自动重算和易失函数对引用返回结果的影响.rar

14.34 KB, 下载次数: 20

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-11-22 15:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
胡剑0227 发表于 2011-11-22 13:54
刚刚把一楼的附件看完,文字还没有看过。这个题和数组班第一课时的一个练习极为相似,当时的解释是VLOOKUP功 ...

学习胡斑的工作精神,辛苦了。
第一个表的现象我一直很感兴趣。
看来,数组运算的方式不仅取决于公式本身(第一个表的数组公式没有采取任何处理手段,仅仅是处理了引用的源数据),源数据的结构形式将对运算选择造成影响,你觉得这个问题有有天外飞仙的感觉么?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-14 22:04 , Processed in 0.032700 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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