支付日期之间每月发生的账单日期数

时间:2018-01-24 18:26:54

标签: arrays excel date excel-formula

供参考;今天是24/01/2018。

我的公式将之前的付款日期放在以" YYYYMM"格式命名的工作表的单元格中。在这种情况下,单元格 201712!B1 ,基于上次支付日期的月份。

下一个付款日期位于模板中!b1

[帐号来自我的帐户> [@ [开始日期]]

目前我设法提出的最佳公式是数组公式:

计算付款次数:

{=SUMPRODUCT(--(TEXT(ROW(INDIRECT(INDIRECT(TEXT(DATE(YEAR(TEMPLATE!$B$1),MONTH(TEMPLATE!$B$1)-1,DAY(TEMPLATE!$B$1)),"yyyymm")&"!$b$1")&":"&DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY())))),"dd")=TEXT([@[START DATE]],"dd")))}

以上似乎运作正常......但我现在正在质疑它,

要了解支付仍会发生多少次,我有:

{=SUMPRODUCT(--(TEXT(ROW(INDIRECT(DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY())+1)&":"&TEMPLATE!$B$1-1)),"dd")=TEXT([@[START DATE]],"dd")))}

上次付款日期为22/12/2017 ,我的下次付款日期为25/01/2018

第二个公式显示,我仍然需要支付一笔款项,以支付每个月25日在今天应该是最后一天的付款期内发生的付款。

我想我可能会过于复杂......任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

由于ROW函数的工作方式,您的第二个公式出现故障,例如ROW(3:1)ROW(1:3)相同,因此在您的公式中,今天+ 1 之后下一个发薪日-1您仍然可以获得这两个日期,因此计算超出范围的付款日期

为什么不检查账单日期是在今天之后,还是在下一个发薪日之前,如下:

=COUNTIFS([@[START DATE]],">"&TODAY(),[@[START DATE]],"<"&TEMPLATE!$B$1)

对于在上一个发薪日和今天之间支付的账单,您可以做类似的事情,即

=COUNTIFS([@[START DATE]],">="&INDIRECT(TEXT(EDATE(TEMPLATE!$B$1,-1),"yyyymm")&"!B1"),[@[START DATE]],"<="&TODAY())