【问题标题】:excel calculate number of days per month in certain periodexcel计算特定时期每月的天数
【发布时间】:2021-01-26 10:06:18
【问题描述】:

我知道这已经被问过很多次了。但我无法让它适用于我的场景。我需要计算两个日期之间的入住天数,但我也需要考虑年份...(即 2020 年 1 月至 2021 年 12 月。

我的计算公式是:=MAX(0; MIN(EOMONTH(C$1; 0); $B2)-MAX(C$1; $A2) +1) 其中 C1 是我要查找的月份,B2 是结束日期,A2 是开始日期...

这是我的截图:

这是我期待的结果:

我认为我的格式有问题,我不知道如何克服......通过更多测试,看起来我的公式一开始就很好:

  1. 我创建空白工作表并手动添加开始日期 - 结束日期和标题列月份以尝试公式,将其格式化为日期(使用 * 作为日期 - *14.3.20)并且效果很好...这是我的屏幕截图:

  1. 当我从不同的工作表复制粘贴开始日期和结束日期时(我已经有数千个开始结束日期......不可能手动输入所有日期)。比我粘贴特殊的值 - 只是值,然后在格式中我选择日期,与我的测试 excel 表相同的格式......它根本不起作用......我如何在粘贴的值上格式化日期?这是错误的屏幕截图...

我选择了开始日期列和结束日期列:

Data > Text to Columns Next, Next, 然后选择 Date 'DMY'.... 成功了。

开始和结束日期被转换回日期,一切都开始为我工作......

从数据库导入的日期并且它们前面有前导空格...这就是计算失败的原因。一旦他们回到真实日期,一切都开始工作了......

感谢大家的帮助!

【问题讨论】:

  • 您的预期结果是什么?
  • 对不起,我没有说.. 最重要的事情。结果应该是 jan2020 到 oct2020 0,比 Nov2020 - 20、Dec2020 - 31、Jan2021 - 31... 等到 Nov2021
  • 使用所有相关信息更新您的问题(最好是降价示例数据示例表而不是屏幕截图)。
  • 抱歉,我的错,我刚做了。
  • 列标题是否格式化为日期?

标签: excel


【解决方案1】:

我只是发布另一个我已经制定的基于 IF 的变体。

=IF(OR(AND(C$1>$A2,$B2>C$1),AND(EOMONTH(C$1,0)>$A2,$B2>EOMONTH(C$1,0))),MIN($B2,EOMONTH(C$1,0))-MAX($A2,C$1)+1,0)

主要条件是检查第 1 行(当月内)提到的任何日期是否与单元格 A2B2 中指定的开始日期或结束日期相交。清除此问题后,您发布的主要逻辑就可以正常工作了。

您必须根据您的语言环境更改参数分隔符!

编辑-

@AnilGoyal 发现了公式错误,我正在发布修改后的公式。我已将那些缺少的AND 条件放在OR 中。除此之外,该公式会遗漏日期为该月的第一天或最后一天的边界条件。

=IF(OR(AND(C$1>=$A2,C$1<=$B2),AND(EOMONTH(C$1,0)>=$A2,EOMONTH(C$1,0)<=$B2),AND($A2<=EOMONTH(C$1,0),$A2>=C$1),AND($B2<=EOMONTH(C$1,0),$B2>=C$1)),MIN($B2,EOMONTH(C$1,0))-MAX($A2,C$1)+1,0)

总的来说,OP的原始公式应该很好用。事实证明,下面的公式似乎也可以正常工作。 =MAX(0,MIN($B2,EOMONTH(E$1,0))-MAX($A2,E$1)+1)

【讨论】:

  • 看来我的公式没问题,只是不知道如何将粘贴的日期格式化为日期...
  • 但我刚刚注意到一个问题,我的公式中没有这个问题!如果开始日期和结束日期在同一个月,则返回 0 而不是计算差异! image
  • @AnilGoyal 感谢您的测试和通知。我已经发布了修改后的方法。
【解决方案2】:

在 C2 中输入这个公式

=IF(AND(C$1<MIN($A2,$B2),MONTH($A2)>MONTH(C$1)),0,IF(C$1>MAX($A2,$B2), 0,IF(C$1>=MIN(C$1,$A2),MIN(EOMONTH(C$1,0),$B2)-MAX($A2,C$1)+1,-MIN($B2,C$1)+$A2+1)))

【讨论】:

  • 看来我的公式没问题,只是不知道如何将粘贴的日期格式化为日期...
  • 对不起,我一直在处理粘贴的数据,但它对我一点用都没有。只有当我发现当我手动输入日期时它才开始工作。我立即编辑了我的问题。所以只是我不知道,对不起......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多