Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA中使用Countifs公式?_Vba_Excel_Loops_Countif - Fatal编程技术网

如何在VBA中使用Countifs公式?

如何在VBA中使用Countifs公式?,vba,excel,loops,countif,Vba,Excel,Loops,Countif,我正在写一本有8张工作表的工作簿。 工作表名称: [层次结构、胜利、前景、pcv、失误、损失、回溯日期、登录] 在“层次结构”工作表中,我想应用B列中的公式,直到B列的最后一个值(包括销售人员的姓名)。(我想我们将使用循环,我不确定应该使用哪个循环。) PS:我需要上述countif公式和循环(在VBA中)中的帮助,以使用该公式直到列中的最后一条记录。如果您只需要一个结果,而不是在工作表的列中填充公式,则可以使用以下选项之一: 快速单循环-仅使用循环: Sub countifs_in_vba()

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

[层次结构、胜利、前景、pcv、失误、损失、回溯日期、登录]

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


PS:我需要上述countif公式和循环(在VBA中)中的帮助,以使用该公式直到列中的最后一条记录。

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

快速单循环-仅使用循环:

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
慢一点-使用
应用程序。工作表功能

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

给定公式应该在哪个单元格中?这很难理解,因为你说的是B列,但在同一个公式中有一个标准,它指的是单元格B4-同一列!乍一看,这是没有道理的。或者你真的不想把公式放在任何单元格中,你只需要得到结果?你只是想把公式应用到B列,直到某一列数据行的最后一个单元格为止?如果是这样,则无需循环。您可以使用
.FillDown
方法或
.AutoFill
方法。您可能还需要获取所需列的最后使用的行。请看下面的帮助,因为这里有一些警告:通过检查✓ 符号,如果它解决了您的问题。如果没有,请详细说明。
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