CountIFS的VBA和循环

时间:2017-12-01 15:30:52

标签: excel-vba vba excel

我正在尝试使用countifs函数从值表创建单独工作表上的列。以下代码适用于一个单元格和静态条件,但我希望它在" FilteredData"上重复B列。使用单元格" B1" (支付期#)和A列:A值作为其他标准(员工姓名)。我假设我需要在countifs函数中嵌入一个循环但是我不知所措并且可以使用一些指导。

Sub countIfs()

Dim wsSourceData As Worksheet
Set wsSourceData = Worksheets("Data")

Sheets("FilteredData").Range("B2").Value2 = _
    Excel.WorksheetFunction.countIfs( _
    wsSourceData.[B:B], "Jane Doe", wsSourceData.[F:F], "Pay Period #")

End Sub

1 个答案:

答案 0 :(得分:2)

您可以使用参数

例如:

Sub countIfs(Line As Long, fCrit As String, sCrit As String)
    Dim wsSourceData As Worksheet
    Set wsSourceData = Worksheets("Data")

    Sheets("FilteredData").Range("A" & Line).Value2 = fCrit & " " & sCrit
    Sheets("FilteredData").Range("B" & Line).Value2 = Excel.WorksheetFunction.countIfs(wsSourceData.[B:B], fCrit, wsSourceData.[F:F], sCrit)
End Sub

Public Sub Prog()
    Dim fCrit(1 To 2) As String
    Dim sCrit(1 To 2) As String

    fCrit(1) = "Jane Doe"
    fCrit(2) = "John Doe"

    sCrit(1) = "Pay Period #"
    sCrit(2) = "Pay Period2 #"

    For i = 1 To UBound(fCrit)
        Call countIfs(i + 1, fCrit(i), sCrit(i))
    Next i
End Sub