Tag: volatile

易失性用户定义函数不按预期重新计算(VBA / Excel)

看起来Application.Volatile和ActiveSheet.Calculate不是我认为的那样,我需要帮助创build一个函数,当相关数据改变时能够正确地重新计算。 以下是我现在正在做的事情: Public Function Availability(EmpName As Range) Application.Volatile (True) ColLetter = Cletter(EmpName.Column) Set NameRange1 = Range("$" & ColLetter & "$1:$" & ColLetter & "$" & (Application.ActiveCell.Row – 1)) Set SumRange1 = Range(Cletter(Application.ActiveCell.Column) & "1:" & Cletter(Application.ActiveCell.Column) & (Application.ActiveCell.Row – 1)) Sum1 = Application.SumIfs(SumRange1, NameRange1, EmpName) Availability = Sum1 End Function 所以你可以看到,它需要一个单元格,并使用该单元格的sumifs来提供条件和标准列,使用函数所在的列来为实际的数字求和(我知道这似乎是重新发明轮子,但我只是提出了我的问题最简单的forms)。 它基本上每行都执行这些计算。 CLetter只是另一个将Column#转换成字母的小函数,因为我懒得调用R1C1,并且发现它更具可读性。 但是每当我修改标准或总和范围,而不是重新计算标识符或数字的变化,似乎忘记了受影响的行存在(即使我只是改变它匹配的标准),或只是抛出一个#VALUE错误。 通过点击“= […]

预期:声明错误结束 – 编码易失性公式

我有两个易失性的公式,当它是硬编码在Excel中工作正常..但是这个公式将是dynamic的,所以我插入VBA,并会稍后循环。 Worksheets("Interest Calculator").Range("E5").Formula = "=IF($C5>Inputs!E8-1,"",IF($C5<=Portfolio_Duration,(SUM($E$4:E4)+$G4)/Portfolio_Duration,(SUM(INDIRECT("E"&$C5-Portfolio_Duration+4):INDIRECT("E"&$C5+3))+$G4)/Portfolio_Duration))" 我得到一个编译错误:预期:语句结束和“E”在间接(“E”&$ C5 + 3))+ $ G4)/ Portfolio_Duration))“突出显示。 我怎样才能解决这个代码? 谢谢! 如果有帮助,错误持续时间= 55和投资组合持续时间= 36