计数如果不自动计算



我的countif函数如果不自动计算 - 我错过了什么吗?

    Option Explicit
Function my3CountIfs(Rng1 As Range, Criteria1 As String, Rng2 As Range, Criteria2 As String, Rng3 As Range, Criteria3 As String) As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    Select Case ws.Name
        Case "Summary-Sheet", "Notes", "Results", "Instructions", "Template"
            ' do nothing
        Case Else
             my3CountIfs = my3CountIfs + Application.CountIfs(ws.Range(Rng1.Address), Criteria1, ws.Range(Rng2.Address), Criteria2)
    End Select
Next ws
End Function

当我使用以下命令时,我必须手动单击它并按回车键以显示更新的答案

=my3COUNTIFS(I49,"Yes",I7,"Yes",I1, "Active")

是的,我已将 excel 设置为自动计算。

感谢您的帮助 - 今晚在此 excel 表上进行演示,刚刚发现它无法正常工作! - 啧啧!

正如 cyboashu 在评论中提到的,您需要在函数中放入Application.Volatile。但正如 Rik 所提到的,这也可能导致性能问题。这个特定的帖子及其答案与您的问题相关。

仅供您使用的选项摘要:

Function xyz()
    Application.Volatile 'or Application.Volatile = True in later versions
    ...
End Function

或一些手动按键

  • F9 重新计算所有打开的工作簿中的所有工作表
  • Shift+ F9 重新计算活动工作表
  • Ctrl+Alt+ F9 重新计算所有打开的工作簿中的所有工作表(完全重新计算)
  • Shift + Ctrl+Alt+ F9 重建依赖关系树并执行完全重新计算

或者一个对我有用的选项(因为我只需要在每次运行特定宏时重新计算我的 UDF)是使用如下所示SendKeys

Sub xyz()
    ...
    'Recalculates all formulas by simulating keypresses for {ctrl}{alt}{shift}{F9}
    SendKeys "^%+{F9}"
    ...
End Sub

(这是 SendKey 的 MSDN 页面)

相关内容

最新更新