You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel跨年度计算租赁期内指定月份售卖天数的非数组公式需求

Excel跨年度计算租赁期内指定月份售卖天数的非数组公式需求

我完全get到你的需求了——要在不用数组公式、VBA或者辅助表的前提下,精准算出冰卡车租赁期(B1到B2)里属于指定售卖月份(F1=4月到F2=9月)的总天数,哪怕跨好几个年份也不能出错。

这里给你一个符合要求的非数组公式,直接粘贴到B5单元格就能用:

=MAX(0,YEAR(B2)-YEAR(B1)-1)*183 + MAX(0,MIN(EOMONTH(DATE(YEAR(B1),$F$2,1),0),$B$2)-MAX(DATE(YEAR(B1),$F$1,1),$B$1)+1) + IF(YEAR(B1)<>YEAR(B2),MAX(0,MIN(EOMONTH(DATE(YEAR(B2),$F$2,1),0),$B$2)-MAX(DATE(YEAR(B2),$F$1,1),$B$1)+1),0)

公式逻辑拆解:

我把公式拆成了3个核心部分,好懂还容易调整:

  1. 中间完整年份的售卖天数
    MAX(0,YEAR(B2)-YEAR(B1)-1)*183
    先算出租赁期里夹在开始、结束年份之间的完整年份数,乘以每年4-9月的固定天数183(4月30天+5月31天+6月30天+7月31天+8月31天+9月30天=183天,平年闰年都不影响这个数值)。要是没有中间完整年份,这部分直接返回0。

  2. 开始年份的有效售卖天数
    MAX(0,MIN(EOMONTH(DATE(YEAR(B1),$F$2,1),0),$B$2)-MAX(DATE(YEAR(B1),$F$1,1),$B$1)+1)

    • 先找开始年份售卖期的最后一天(9月30日),和租赁结束日取较小值,避免超出实际租赁范围;
    • 再找开始年份售卖期的第一天(4月1日),和租赁开始日取较大值,避免统计还没租的天数;
    • 两者相减再加1(要包含首尾日期),如果结果为负,说明开始年份没有效售卖天,直接返回0。
  3. 结束年份的有效售卖天数
    IF(YEAR(B1)<>YEAR(B2),MAX(0,MIN(EOMONTH(DATE(YEAR(B2),$F$2,1),0),$B$2)-MAX(DATE(YEAR(B2),$F$1,1),$B$1)+1),0)
    只有当开始和结束年份不同时才计算这部分,逻辑和开始年份完全一致,避免同一年份重复统计。

拿你的示例验证下:

你的租赁期是2025年5月27日到2027年7月14日:

  • 2025年有效天数:5月27日到9月30日,共126天;
  • 2026年完整售卖期:183天;
  • 2027年有效天数:4月1日到7月14日,共105天;
  • 总天数:126+183+105=414天,用公式算出来结果完全一致。

而且这个公式灵活性很强,以后要是售卖月份范围变了,直接改F1和F2的数值就行,不用动公式本身。

备注:内容来源于stack exchange,提问作者Dorian IL

火山引擎 最新活动