EXCEL vba 易失性函数

本文深入探讨了Excel中易失性函数的概念、类型及其对工作表运行速度的影响。通过实例展示了如何识别并标记易失性函数,以及它们在不同场景下的表现。此外,文章还介绍了在VBA中自定义函数时如何将其转化为易失性函数,并通过一个具体的自定义函数示例来说明其实时运算特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       所谓易失性函数是指:无论何时在工作表的任意单元格中进行计算时,易失性函数都必须重新进行计算。“易失函数”,就是指使用这些函数后,会引发工作表的重新计算,有时我们打开一个工作薄但不做任何更改就关闭时,EXCEL却提醒我们是否要保存,这就是因为文件用到了一些“易失性函数”,在打开文件时,易失性函数引发了文件重算。
 
       当每按一次F9,都会导致含有易失函数的公式,进行重新计算。

       不但如此,在“自动重算”下任一空白单元格输入任意一个字符,都可能导致易失函数公式的重新计算,

       易失性函数在应用中非常用用,但如果在表中大量使用易失性函数、滥用易失性函数的情况下,就可能会大大的影响表格的运行速度

       “易失函数”又分“显性”易失函数和“隐性”易失函数 

       now( ),rand( ),today( ),rand()是“显性”易失函数

       offset( ),indirect( ),cell( ), info( ) 则是“隐性”易失函数【但cell("filename")不是易失函数】

       有些函数:rows( ),columns( ),areas( ), weeknum( ),在微软文件中将其列为易失函数,

       易失函数会影响表格运行速度,但大家也不需要谈虎色变,一般易失函数的运算速度是很快的,常常人还没觉察,它已经完成运算,据有心人测试:易失函数(包括易失性操作)会引发所有打开工作簿里含易失函数的公式全部重算,但不含易失函数的公式不会参与重算。这也成了定论
 
        index( )函数在excel 97版之后,不再是易失函数,但在使用A1:INDEX()、INDEX():INDEX()这种结构时,INDEX表现为半易失性函数(或工作簿级易失性函数),即:在工作表中按F9键或编辑单元格时不会引起整个工作簿的重新计算,而重新打开工作簿则会重新计算。
 
      (大多数的易失性函数都是工资表级易失性函数,即在工作表按F9键或编辑单元格时,就会引发重新计算。)

       一般的公认SUMIF()因为其第3个参数简写时的不确定性,也认为是半易失性函数(或工作簿级易失性函数)

       但我在实际运用时发觉SUMIF()和COUNTIF()也会因其它任意单元格的变动而重算,我个人认为也应该算是易失性函数,但只是我个人主观想法,不能做数。必经判定易失性函数的标准是“打开一个工作薄但不做任何更改就关闭时,是否要保存” 。

本文来自:Excel吧 (www.excelba.com http://www.excelba.com/Art/Html/345.html

 

在VBA自定义函函数时,我们可以将该函数变成易失性函数,只要在函数中加入一句语句。

    Application.Volatile

以下,为计算A列最后一个单元格行号的自定义函数,当用上述语句将它标记为易失性函数后,这个函数可以实时运算。

Function MyFunC()
    MyFunC = Range("A65536").End(xlUp).Row
    Application.Volatile
End Function
 

【作者: 阿木】【访问统计: 155 】【2010年03月5日 星期五 13:52】

 http://publishblog.blogchina.com/blog/tb.b?diaryID=6950406

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值