【问题标题】:VBA for CountIFS and loopCountIFS 和循环的 VBA
【发布时间】:2017-12-01 15:30:52
【问题描述】:

我正在尝试使用 countifs 函数在单独的工作表中从值表中创建一列。以下代码适用于一个单元格和静态标准,但我希望它使用单元格“B1”(支付期#)和列 A:A 值作为其他标准(员工姓名)重复“FilteredData”表上的 B 列。我假设我需要在 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

【问题讨论】:

  • 是的,但我希望范围从 b2 到 b3 等逐个单元格地更改,同时名称标准将分别更改为 A 列:例如。如果 range = B2,则使用 A2 员工姓名作为标准 1; B3用A3等

标签: excel vba


【解决方案1】:

你可以使用参数

例如:

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

【讨论】:

    猜你喜欢
    • 2017-06-19
    • 2021-12-16
    • 1970-01-01
    • 2017-08-06
    • 2018-07-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    相关资源
    最近更新 更多