首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel COUNTIFS和转换自定义日期

Excel COUNTIFS和转换自定义日期
EN

Stack Overflow用户
提问于 2018-04-20 03:43:39
回答 2查看 342关注 0票数 0

我有以下几点:

代码语言:javascript
运行
复制
=COUNTIFS(B$6:B$36,">0",$A$6:$A$36,">=TODAY()")

基本上,A列是日期,从1到31的每一行都是一个月的自定义格式。B栏后面是轮班(小时)。我正在计算从今天起这个月还剩下多少班。

日期格式目前为“2018年4月20日星期五”。

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

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

我假设这是由于自定义日期格式。是否有一种方法可以在COUNTIFS内部进行解析,以避免使用虚拟列

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-02 18:46:59

根据您所放的图像,这里有一个可能的解决方案:

代码语言:javascript
运行
复制
=COUNTIFS($A$6:$A$36;">="&TODAY();$B$6:$B$36;"<>''")
  • ">="&TODAY() -您将指定范围内的日期($A$6:$A$36)与TODAY()公式的结果进行比较;
  • "<>''" -测试包含移位的单元格($B$6:$B$36)是否为空。

我希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2018-04-20 10:33:07

下面的函数应该会产生所需的结果。

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49933636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档