Excel 在较长的计算周期内找到较短的天数

Excel 在较长的计算周期内找到较短的天数,excel,excel-formula,Excel,Excel Formula,我有一组日期,总共7个周期,每个周期跨越6个月,每个周期都有相应的计算系数 我会让用户输入他们希望计算的时间段,可以是6个月内的一个时间段,也可以是两个或多个时间段之间的全部或部分时间段 说明: 预设时段: 用户输入: 我已经获得了用户输入的用于计算的时段的十进制值(每月)。例如(参见用户输入),2015年1月1日至2015年4月29日期间的十进制值每月为3.97。该期间的计算如下: n*3.97*113% 对于第二种情况,2015年4月30日至2015年6月30日期间的十进制值为2.03,

我有一组日期,总共7个周期,每个周期跨越6个月,每个周期都有相应的计算系数

我会让用户输入他们希望计算的时间段,可以是6个月内的一个时间段,也可以是两个或多个时间段之间的全部或部分时间段

说明:

  • 预设时段:
  • 用户输入:
  • 我已经获得了用户输入的用于计算的时段的十进制值(每月)。例如(参见用户输入),2015年1月1日至2015年4月29日期间的十进制值每月为3.97。该期间的计算如下:

    n*3.97*113%

    对于第二种情况,2015年4月30日至2015年6月30日期间的十进制值为2.03,用于以113%计算,然后将结果添加到以119%计算的结果中,使用2015年7月1日至2015年12月20日期间的十进制值5.65:

    (n*2.03*113%)+(n*5.65*119)


    我认为我可以处理周期的分解,因为修订活动是在特定日期每两年进行一次,但欢迎提供相关建议。更重要的是,我需要帮助跟踪与如上所示的用户输入的时段相对应的预设计算因子(比如132%)。它可行吗?

    我将使用标准方法来查找任务,并将任务分为三个部分,如我对的回答所示

    (1) 第一部分是查找用户的日期范围与整个月份的一个或多个修订周期之间的重叠,需要一个数组公式。我选择使用1来获得重叠开始和结束之间的月差。如果没有重叠,则输入到Datedif的开始日期将在结束日期之后,并且它将返回一个可被IFERRO捕获的错误。如果用户的日期从A2和B2开始,则在C2中给出:

    =SUM(IFERROR((DATEDIF(IF(K$2:K$8>A2,K$2:K$8,A2),IF(L$2:L$8<B2,L$2:L$8,B2),"m")+1)*M$2:M$8,0))
    
    我把OP的两个例子的结果放在H2和H3中进行比较:我的结果在前3个有效数字中与它们一致

    n*3.97*113%
    
    (n*2.03*113%)+(n*5.65*119)  
    
    在所有情况下,我都设置了n=1,并忽略了速率是一个百分比这一事实


    这显示了如何手动计算结果:


    使用Datedif的1个优点:

    (1) 与仅使用月函数不同,它可以跨年工作。 (2) 使用Iferror可以方便地识别不匹配的日期范围。

    使用Datedif的缺点:

    (1) 它是一个未记录的函数,将来可能会被撤销。 (2) 在这种特殊情况下,所有日期计算都在同一年内,因此可以使用月份


    我想这是可能的,但我们需要更多关于计算如何进行的细节——看起来第二次用户输入将以132%指定10天,然后以136%指定6个月?@TomSharpe我在智能手机上发布了这个问题,无法添加太多细节和屏幕截图。我将用适当的插图更新一下这个问题。答案可能是一个数组类型的公式,类似于sumproduct(n*[十进制数公式]*[百分比公式])。应该可以算出[百分比公式],但在不知道n是什么和[十进制数公式]应该是什么的情况下,仍然无法测试整个问题。我从您的示例中猜测,十进制数是完整日历月数+总和(不完整月份的期间/不完整月份的天数)对于任何不完整的月份,我们只需要知道n是常数还是在整个投资周期内可能会变化?加上你在每一个案例中所期望的结果。我起草了一些似乎有效的东西,但我更愿意在早上再看一遍,做更多的检查(我在英国夏令时)。谢谢你的回答,汤姆,谢谢你指出了119%的错误,我在问题中纠正了这个错误。我仍在绞尽脑汁寻找答案,试图找出为什么你的结果中的分数和我的有点不一样。分数是否包括该期间的第一个和最后一个日期?分数是否包括该期间的第一个和最后一个日期。我认为差异仅仅是因为你问题中的十进制数只显示前3位数字-也许如果你能用更多的小数点来显示它们,我们可以检查一下。这是一个有7位小数点的输出截图-我在一个空单元格中输入了十进制值的公式,以供参考。我对用户的输入做了几次计算,这个公式似乎产生了准确的结果。第一个和第四个(不跨越多个修订期)是正确的。我需要不止一个十进制数,但如果它确实像你在问题中所做的那样跨越多个时段(n*2.03*113%)+(n*5.65*119),但数字更多。我也不能完全理解你截图中的持续时间。请注意,有一场足球赛我必须观看,所以从现在起,回答可能会断断续续…:-)好的,我的回答不会适应问题发布后所做的任何更改。然而,我增加了一个额外的手动计算栏,以准确显示我的结果来自何处。
    =SUMIFS($M$2:$M$8,$K$2:$K$8,"<="&B2,$L$2:$L$8,">="&B2)*(EOMONTH(B2,0)-B2)/(EOMONTH(B2,0)-EOMONTH(B2,-1))
    
    =C2-D2-E2
    
    n*3.97*113%
    
    (n*2.03*113%)+(n*5.65*119)