为什么工作表中的数据总是在变化?3354这是一个不稳定的函数
为什么工作表中的数据总是在变化?3354这是一个工作中的易变函数!请仔细查看下面图1中的工作表。
图1
当我们在工作表单元格中输入数据时,单元格B3和B5中的值将自动更改。首先,我声明我没有在工作表事件中编写VBA代码来实现这个自动更改功能,而是在单元格B3中输入了公式:
=NOW()
在单元格B5中输入公式:
=RAND()
那么,它们为什么会自动变化呢?
有时,当我们打开工作簿并且没有进行任何更改或输入时,Excel会在我们关闭工作簿时提示我们保存更改。为什么呢?
其实这都是Excel的“挥发”功能造成的。
Excel中有一些函数。每当Excel需要计算工作表的任何部分(包括重新计算、打开工作表或编辑工作表中的单元格)时,包含这些函数的单元格将同时重新计算,它们的值也将发生变化。这些函数被称为“可变函数”。
Excel有哪些易变函数?
有些Excel函数明显是易变函数,包括RAND函数、NOW函数、TODAY函数。
有些Excel函数是不可变的,包括OFFSET函数、CELL函数、INDIRECT函数、INFO函数。
有些函数在某些Excel版本中不稳定,但在其他Excel版本中不稳定。例如,在Excel 97中,INDEX函数成为非易失性函数。
有些函数在微软文档中被描述为易失性的,但在实际测试中似乎是非易失性的,包括INDEX函数、ROWS函数、COLUMNS函数、ares函数和CELL函数。
在Excel 2002和更高版本中,SUMIF的一种特殊语法是不稳定的:
=sumif (a1:a5,“0”,b1)是易失性的,而=sumif (a1:a5,“0”,b1:b5)是非易失性的。
如何让UDF变得不稳定?
创建用户定义函数时,在第一行写一条语句:
申请。易变真
您可以使自定义函数不稳定。这样,一旦重新计算工作表,就会强制计算该函数。
请记住,该语句必须位于用户定义函数的第一行。
例如,以下自定义函数模仿Excel内置的RAND函数:
函数InitateRand()
申请。易变真
InitateRand=Rnd()
结束功能
在工作表单元格中输入公式:
=InitateRand()
像RAND函数一样,每次重新计算工作表时,它的值都会改变。
可以申请。Volatile(False)'到Volatile函数使它们变得不稳定?
在任何情况下都不能申请。Volatile(False)将应用于内置Excel函数,除非重写与内置函数具有相同函数的用户定义函数(UDF),并且应用程序。应用了Volatile(False)语句。
版权声明:为什么工作表中的数据总是在变化?3354这是一个不稳定的函数是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















