【问题标题】:Translating Two Excel COUNTIF Functions into VBA将两个 Excel COUNTIF 函数转换为 VBA
【发布时间】:2020-02-12 03:51:38
【问题描述】:

一如既往,这是一个非常基本的问题。我试图在 Excel VBA 中取两个 countif 函数的总和,这些函数使用两个不同的标准获取两个不同范围内的值,基本上是日期是否大于或小于特定日期。

这个countif 函数返回所需的结果: =COUNTIF(H3:H21,"<12/1/2020")+COUNTIF(H3:H21,">2/1/2022")

如何翻译成VBA?我可以弄清楚如何执行countifs 之一,但是将它们组合在一起,即使尝试使用sum 工作表函数也会引发类型不匹配错误。

任何帮助,一如既往,非常感谢!!!

【问题讨论】:

  • 你把公式中的引号加倍了吗?

标签: excel vba function


【解决方案1】:
  1. 添加模块
  2. 定义你想要的公共函数

在我的代码下面(也许不是你想要的逻辑)

Public Function countIfBeforeDate(targetRage As Range, xConditionDate As String, Optional afterYear As Long = -1) As Long

    countIfBeforeDate = WorksheetFunction.countIf(targetRage, "<" & xConditionDate)

    If afterYear > 0 And VBA.IsDate(xConditionDate) Then
        Dim cConditionDate As Date
        cConditionDate = VBA.DateAdd("yyyy", afterYear, VBA.CDate(xConditionDate))

        countIfBeforeDate = countIfBeforeDate + WorksheetFunction.countIf(targetRage, ">" & cConditionDate)
    End If

End Function

你可以在 Cell Like 中使用函数

=countIfBeforeDate(H3:H21,"2020-01-01",2)

【讨论】:

  • 这是一个很大的帮助!谢谢!虽然不完全是我正在寻找的东西,但它引导我走上了绝对正确的道路!这就是我最终得到的并且它有效。 Public Function countifdate() countifafterdate = WorksheetFunction.CountIf(Range("H2:H40"), ">" & "1-feb-2020") countifbeforedate = WorksheetFunction.CountIf(Range("M2:M40")`, "
猜你喜欢
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
相关资源
最近更新 更多