如何在VBA中使用Countifs公式?

我正在写一个有8个工作表的工作簿。 工作表的名称:

[ 层次结构,胜利,outlook,PCV,错过,损失,回溯,login ]。

在“ 层次结构 ”工作表中,我想将公式应用到列B中, 直到列B 的最后一个值 (其中包括销售人员的姓名)。 (我想我们将使用循环,我不知道应该使用哪个循环。)

=COUNTIFS(wins!$AL:$AL,Hierarchy!$B4,wins!$P:$P,"Complete") 

PS :我需要上面countif公式和循环(在VBA中)使用该公式直到列中的最后一条logging。

如果您只需要一个结果而不是在工作表中向列中填充公式,则可以使用以下选项之一:

快速的一个 – 只使用循环:

 Sub countifs_in_vba() Dim Result As Long Dim i As Long Dim cell As Range Dim wsHierarchy As Worksheet Dim wsWins As Worksheet Set wsHierarchy = ThisWorkbook.Sheets("Hierarchy") Set wsWins = ThisWorkbook.Sheets("wins") For Each cell In Intersect(wsHierarchy.Range("B:B"), wsHierarchy.UsedRange) For i = 1 To wsWins.Cells.SpecialCells(xlCellTypeLastCell).Row If cell.Value = wsWins.Cells(i, "AL").Value And wsWins.Cells(i, "P").Value = "Complete" Then Result = Result + 1 End If Next Next MsgBox Result End Sub 

更慢 – 使用Application.WorksheetFunction

 Sub countifs_in_vba2() Dim Result As Long Dim cell As Range Dim wsHierarchy As Worksheet Dim wsWins As Worksheet Set wsHierarchy = ThisWorkbook.Sheets("Hierarchy") Set wsWins = ThisWorkbook.Sheets("wins") For Each cell In Intersect(wsHierarchy.Range("B:B"), wsHierarchy.UsedRange) Result = Result + Application.WorksheetFunction.CountIfs(wsWins.Range("AL:AL"), cell.Value, wsWins.Range("P:P"), "Complete") Next MsgBox Result End Sub