含TODAY()的自定义函数遇无关单元格变更自动刷新的问题求助
解决自定义函数随无关单元格修改自动刷新的问题
你的问题根源在于TODAY()是易失性函数——只要工作表里任何单元格发生修改(哪怕和它完全无关),Excel都会重新计算所有易失性函数,连带调用它的自定义函数也跟着刷新。
给你几个可行的解决办法:
用非易失性方式传入日期
把TODAY()的结果手动写到某个单元格(比如B1),然后A1的公式改成=MY_CUSTOM_FUNCTION(B1)。这样只有B1的值变化时,自定义函数才会刷新,修改A2不会触发重算。
如果需要每天打开文件自动更新日期,可以加一段VBA代码:Private Sub Workbook_Open() ThisWorkbook.Sheets("你的工作表名称").Range("B1").Value = Date End Sub修改自定义函数的非易失性属性
要是你的自定义函数是用VBA写的,可以给它加上非易失性设置,强制只有当直接输入参数变化时才重算:Function MY_CUSTOM_FUNCTION(inputDate As Date) As Variant Application.Volatile False ' 关闭易失性 ' 这里写你的函数逻辑 ' ... End Function注意:如果还是直接传
TODAY()当参数,因为TODAY()本身是易失性的,可能还是会触发刷新,所以更稳妥的搭配是从单元格取日期参数。手动控制刷新时机
如果不需要自动更新日期,直接把日期写死在公式里,比如=MY_CUSTOM_FUNCTION("2024-05-20"),需要更新时手动改日期,或者选中A1按F9单独刷新这个单元格。
内容的提问来源于stack exchange,提问作者TDo
相关产品推荐
相关产品推荐

