供参考;今天是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 日发生的付款,我还有一笔付款要支付,今天应该是最后一天。
我想我可能把这复杂化了...任何帮助将不胜感激。
您的第二个公式由于函数的工作方式而出现故障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())