Excel 计算一年中剩余的发薪日
我想数一数那几天Excel 计算一年中剩余的发薪日,excel,excel-formula,worksheet-function,Excel,Excel Formula,Worksheet Function,我想数一数那几天 从现在到年底(即12月31日),以及 该日期为当月的第15天或最后一天(4月、6月、9月、11月为第30天;1月、3月、5月、7月、8月、10月、12月为第31天;2月为第28天) 有什么方法可以做到这一点吗?这似乎是可行的(尽管我认为它可能会被整理好,我相信有更好的方法……) =(12个月(今天())*2 +IF(DAY(TODAY())一个避免数组公式的变量 1.对于您提出的问题 =SUMPRODUCT(-DAY(DATE)(YEAR(NOW())、MONTH(NOW())
有什么方法可以做到这一点吗?这似乎是可行的(尽管我认为它可能会被整理好,我相信有更好的方法……)
=(12个月(今天())*2
+IF(DAY(TODAY())一个避免数组公式的变量
1.对于您提出的问题
=SUMPRODUCT(-DAY(DATE)(YEAR(NOW())、MONTH(NOW())、DAY(NOW())+ROW(INDIRECT(1:“&DATE(YEAR(NOW())、12,31)-TODAY())={15})+(13个月(TODAY())
=10
2.对于我最初的解释,即计算每月某一天对应的任何天数
=SUMPRODUCT(-DAY(DATE(YEAR(NOW())、MONTH(NOW())、DAY(NOW())+ROW(INDIRECT(1:“&DATE(YEAR(NOW())、12,31)-TODAY()+1))={15,30}
=10
鉴于
=SUMPRODUCT(-DAY(DATE(YEAR(NOW())、MONTH(NOW())、DAY(NOW())+ROW(INDIRECT(1:“&DATE(YEAR(NOW())、12,31)-DAY())={15,31}”)
=8
及
=SUMPRODUCT(-DAY(DATE(YEAR(NOW())、MONTH(NOW())、DAY(NOW())+ROW(INDIRECT(1:“&DATE(YEAR(NOW())、12,31)-DAY())={15,30,31}”)
=13
要更改所需的天数,只需更改{15,30}
组件即可
即
={1,2,12,15,31}
计算第1、2、12、15和31日等的所有天数
此公式将处理闰年在2078年之前的任何版本的Excel中,此公式应适用于任何一年的任何一天(在Excel 2007或更高版本中更长)
注意,我正在检查1天的偏移量中的day=1或16(其目的是为了避开不同的月末day()
value)
{数组公式…按Ctrl+Shift+Enter
提交}
[增编]
如果您不想包括当天(例如,假设今天是8月15日),请使用以下内容:
=SUM(IF(DAY(ROW(OFFSET($A$1,TODAY()+1,0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16},1,0))
另外,我在从今天到2016年闰日及以后的所有日期进行了测试,它起到了一个作用。所有这一切都是通过day()
函数测试作为日期序列处理的行号,看看它们是1还是16,但是序列被+1抵消,所以它确实在检查day()
是否是[任何月份的最后一天]或15。如果结果为真,则添加1,否则添加0
[更多附录]
以下是以相同方式工作的非阵列版本:
包括当日:
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))
不包括当天
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))
如果一个月有31天,你还想包括该月的第30天吗?还有,2月呢?你能使用VBA或just函数吗?是的,12月31日包括在内。我想使用纯Excel函数。+1很好地使用了SUMPRODUCT
。公式返回8,它应该返回。brettdj。它给了{15,30,31}意外的结果。它应该返回10,还是我遗漏了什么?@SiddharthRout它应该是13-它是:)(从8月到12月的所有月份都至少有30天,所以8(来自前一个问题)+5=13)哈哈哈。。。现在仍然是早上6点39分:D公式中的--
是什么?+1对于所有的月末来说都是不错的。按应返回10。:)它就像一场梦。我将小于改为小于或等于(代码示例的最后一行),这样我就可以解释今天是15号。
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))