【问题标题】:VBA: CountIfS function to count how many times a cell value is Yes across multiple worksheets IF another cell valueVBA:CountIfS函数计算一个单元格值在多个工作表中是多少次如果另一个单元格值
【发布时间】:2016-12-12 21:45:57
【问题描述】:

我对 VBA 很陌生(这周),我正在使用代码

Function myCountIf(rng As Range, criteria) As Long
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Summary-Sheet" And ws.Name <> "Notes" And ws.Name <> "Results" Then
        myCountIf = myCountIf + WorksheetFunction.CountIf(ws.Range(rng.Address), criteria)
    End If
Next ws

结束函数

但我想使用 CountIfS 函数来计算一个单元格值在多个工作表中为“是”的次数 IF 另一个单元格值(也跨多个也是“是”)

我试过了:

=myCountIf(AND(I8="Yes",I7="Yes"))

但它不起作用

但是:

=myCountIf(I8,"Yes")

工作正常

它可能很简单,如果是这样,我很抱歉

【问题讨论】:

  • 如果你想使用你的函数与...你需要修改你的UDF以匹配它
  • 我该怎么做?
  • 在下面查看我的答案

标签: vba excel countif


【解决方案1】:

试试下面修改后的UDF

Option Explicit

Function myCountIfs(Rng1 As Range, Criteria1 As String, Rng2 As Range, Criteria2 As String) As Long

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

    Select Case ws.Name
        Case "Summary-Sheet", "Notes", "Results"
            ' do nothing

        Case Else
             myCountIfs = myCountIfs + Application.CountIfs(ws.Range(Rng1.Address), Criteria1, ws.Range(Rng2.Address), Criteria2)

    End Select
Next ws

End Function

但是,为了从 Excel 工作表的单元格中调用它,不要使用常规的 =myCountIf(AND(I8="Yes",I7="Yes")),而是使用下面的行:

=myCountIfs(I8,"Yes",I7,"Yes")

请参阅下面的屏幕截图,例如在 Excel 中使用此 UDF,所有工作表在单元格 I7 和 I8 中都有“YES”,但工作表的名称之一是“Note”,因此结果是 2(而不是 3)。

【讨论】:

  • 太好了!非常感谢!
【解决方案2】:

这是为您提供两个过滤条件的小改动:

Function myCountIfs(rng1 As Range, criteria1, rng2 As Range, criteria2) As Long
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Summary-Sheet" And ws.Name <> "Notes" And ws.Name <> "Results" Then
        myCountIfs = myCountIfs + WorksheetFunction.CountIfs(ws.Range(rng1.Address), criteria1, ws.Range(rng2.Address), criteria2)
    End If
Next ws

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多