手机版

为什么工作表中的数据总是在变化?3354这是一个不稳定的函数

时间:2021-09-20 来源:互联网 编辑:宝哥软件园 浏览:

为什么工作表中的数据总是在变化?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或者邮箱删除。