我正在尝试使用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
答案 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