我正在尝试设计一个非vba Excel函数,该函数检查不同参数的多个范围中的每个单元格,然后返回适用的出现次数。将HOUR函数应用于一系列日期单元格并计算这些单元格中有多少等于某个小时时,会出现我的具体问题。
为了澄清,在VBA中我会写一些类似的东西(请假设A栏包含日期):
Sub tester33()
Dim r As Range
Dim c
Dim a As Integer
Set r = Range("A1:A10")
a = 0
For Each c In r
If (Hour(c) = 5) Then 'time is 5 am, other if conditions are omitted
a = a + 1
End If
Next c
MsgBox (a)
End Sub
我想要工作的是
=COUNTIF(HOUR(A:A);"=5")
到目前为止,我的搜索返回了nada。请注意,我找到了此问题here和here的答案,遗憾的是,这些问题不适用于非数学Excel函数。 我希望这不是一个完全无足轻重的问题,因为我是板上公式的新手。
答案 0 :(得分:0)
使用
=SUM((HOUR(A1:A50)=5)*1)
或
=SUM(--(HOUR(A1:A50)=5))
两者都是数组公式,因此按 Ctrl + Shift + Enter 进行提交。将A1:A50
更改为您的数据范围。
答案 1 :(得分:0)
替代(非阵列)公式是使用
=SUMPRODUCT(--(HOUR(A:A)=5))
并不需要使用 Ctrl + Shift + 输入提交公式。这最终是一个偏好问题。
另外,如果您的数据没有延伸到A列的整个长度,请考虑仅使用数据占用的范围(例如A1:A50
而不是A:A
),因为Excel不会&# 39; t必须遍历空白单元格,这可能会使事情变得棘手。