Excel COUNTIFS并转换自定义日期

时间:2018-04-20 03:43:39

标签: excel vba date

我有以下内容:

=COUNTIFS(B$6:B$36,">0",$A$6:$A$36,">=TODAY()")

基本上,A列是日期,每个行的自定义格式为1到31个月。 B列以后是班次(以小时为单位)。我想弄清楚从今天开始有多少班次。

日期格式目前为“星期五,20/04/201”。

简单的解决方案是将日期格式更改为实际日期,而不是自定义,但电子表格会上传到只接受电子表格格式的软件平台(我无权更改这方面的内容)

编辑:让我的专栏混乱了。公式“有效”,但没有返回正确的计数。

我假设这是由于自定义日期格式。有没有办法在COUNTIFS中进行解析,试图避免使用虚拟列

enter image description here

2 个答案:

答案 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