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月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())、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}))