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