探索Excel中下拉选项的创建技巧与实用方法
955
2022-10-18
怎么工作表中的数据老是自已在变?——这是易失性函数在作怪
怎么工作表中的数据老是自已在变?——这是易失性函数在作怪!请仔细看下图1中的工作表。
图1
=NOW()
在单元格B5中输入了公式:
=RAND()
那么,它们为什么会自动变化呢?
有时候,我们打开一个工作簿,并没有作任何修改或输入,在关闭该工作簿时,Excel却提示要保存修改,这又是为什么呢?
其实,这都是Excel的“易失性”函数在作怪。
在Excel中,存在着一些函数,每当Excel需要计算(包括重新计算、打开工作表或编辑工作表中的单元格)工作表的任意部分时,包含着这些函数的单元格也会同时进行重新计算,其值也会发生变化,这些函数称为“易失性函数”。
Excel的易失性函数有哪些?
一些Excel函数明显是易失性函数,包括:RAND函数、NOW函数、TODAY函数。
一些Excel函数看不出是易失性函数,包括:OFFSET函数、CELL函数、INDIRECT函数、INFO函数。
一些函数在有些Excel版本中是易失的但在另外的Excel版本中不是,例如在Excel 97中INDEX函数变成了非易失性函数。
一些函数在Microsoft的文档中描述是易失的,但在实际测试时似乎是非易失的,包括:INDEX函数、ROWS函数、COLUMNS函数、AREAS函数和CELL函数。
SUMIF的一个特殊语法在Excel 2002及后续版本中是易失的:
=SUMIF(A1:A5,”>0”,B1)是易失的,而=SUMIF(A1:A5,”>0”,B1:B5)是非易失的。
如何使一个用户自定义函数(UDF)成为易失的?
在创建用户自定义函数时,在第一行编写语句:
Application.Volatile True
可以让自定义函数为易失性函数。这样,一旦重新计算工作表,都会强制计算这个函数。
记住,该语句必须在用户自定义函数的第一行。
例如,下面的自定义函数模仿Excel内置的RAND函数:
Function InitateRand()
Application.Volatile True
InitateRand = Rnd()
End Function
在工作表单元格中输入公式:
=InitateRand()
将与RAND函数一样,在每次工作表重新计算时其值都会发生变化。
将’Application.Volatile(False)’应用于易失性函数能够使其成为不易失的吗?
无论什么情形,都不能将Application.Volatile(False)应用于内置的Excel函数,除非重新编写一个与内置函数作用相同的用户自定函数(UDF)并应用了Application.Volatile(False)语句。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。