簡體   English   中英

VBA:CountIfS函數,用於計算多個工作表中單元格值為Yes的次數IF另一個單元格值

[英]VBA: CountIfS function to count how many times a cell value is Yes across multiple worksheets IF another cell value

我是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")

工作正常

它可能非常簡單,如果是這樣,我很抱歉

這是一個小改動,為您提供兩個篩選條件:

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

嘗試下面修改的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工作表的單元格中調用它,請不要使用regular =myCountIf(AND(I8="Yes",I7="Yes"))但下面的行:

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

有關在Excel中使用此UDF的示例,請參見下面的屏幕截圖,單元格I7和I8中的所有工作表都為“YES”,但是其中一個工作表的名稱為“Note”,因此結果為2(而不是3)。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM