Excel:将函数应用于公式内的每个单元格

Excel: Apply function to each cell inside formula

我正在尝试设计一个非 vba Excel 函数,该函数检查多个范围内的每个单元格的不同参数,然后 returns 适用的出现次数。当将 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。请注意,我找到了这个问题 and here 的答案,不幸的是,它不适用于非数学 Excel 函数。 我希望这不是一个完全微不足道的问题,因为我是 in-sheet 公式的新手。

使用

=SUM((HOUR(A1:A50)=5)*1)

=SUM(--(HOUR(A1:A50)=5))

两者都是数组公式,因此按 Ctrl+Shift+Enter 提交。将 A1:A50 更改为您的数据范围。

另一种(非数组)公式是使用

=SUMPRODUCT(--(HOUR(A:A)=5))

不需要使用 Ctrl+Shift+Enter 提交公式。这最终是一个偏好问题。

此外,如果您的数据没有延伸到 A 列的整个长度,请考虑仅使用数据占用的范围(例如 A1:A50 而不是 A:A),因为 Excel 然后不必遍历空白单元格,这会使事情变得笨拙。