我有以下内容:
=COUNTIFS(B$6:B$36,">0",$A$6:$A$36,">=TODAY()")
基本上,A列是日期,每个行的自定义格式为1到31个月。 B列以后是班次(以小时为单位)。我想弄清楚从今天开始有多少班次。
日期格式目前为“星期五,20/04/201”。
简单的解决方案是将日期格式更改为实际日期,而不是自定义,但电子表格会上传到只接受电子表格格式的软件平台(我无权更改这方面的内容)
编辑:让我的专栏混乱了。公式“有效”,但没有返回正确的计数。
我假设这是由于自定义日期格式。有没有办法在COUNTIFS中进行解析,试图避免使用虚拟列
答案 0 :(得分:1)
根据您放置的图像,这是一个可能的解决方案:
=COUNTIFS($A$6:$A$36;">="&TODAY();$B$6:$B$36;"<>''")
">="&TODAY()
- 您将指定范围($A$6:$A$36
)中的日期与TODAY()
公式的结果进行比较; "<>''"
- 您测试包含班次($B$6:$B$36
)的单元格是否为空。我希望这会有所帮助。
答案 1 :(得分:0)
下面的函数应该产生你需要的结果。
Function CountShifts() As Integer
Application.Volatile
Dim arr As Variant, col As Integer
col = Application.Caller.Column 'Get the column that the function was called from
arr = Range("A6:A36").Resize(31, col).Value2
Dim row As Integer: row = UBound(arr) 'Start at the bottom and work upwards
Do While CDate(Split(arr(row, 1), ",")(1)) >= Now() 'until the date is before today
CountShifts = CountShifts + IIf(arr(row, col) > 0, 1, 0) 'Increment CountShifts if there is a positive number
row = row - 1
Loop
End Function