我正在制作一本有8个工作表的工作簿。 工作表的名称:
[层次结构,胜利,展望,个性化,失败,失败,回溯,登录]。
在“层次结构”工作表中,我想在B列中应用公式,直到该列B的最后一个值(包括销售人员的姓名) 。 (我想我们会使用循环,我不确定应该使用哪个循环。)
=COUNTIFS(wins!$AL:$AL,Hierarchy!$B4,wins!$P:$P,"Complete")
PS :我在上面的countif公式和循环(在VBA中)需要帮助才能使用该公式到列中的最后一条记录。
答案 0 :(得分:1)
如果您只需要一个结果而不是在工作表中的列中填充公式,则可以使用以下选项之一:
快速 - 仅使用循环:
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