【问题标题】:Excel function to determine the last Friday in a monthExcel函数确定一个月中的最后一个星期五
【发布时间】:2010-11-16 08:09:26
【问题描述】:

我正在寻找一个 Excel 函数来返回给定日期一个月中的最后一个星期五。

ie:当月中的任何日期作为输入都会给出上周五的日期作为输出。

14-July-09 should give 31-July-09
7-March-05 should give 35-March-09

【问题讨论】:

    标签: excel datetime


    【解决方案1】:

    在上面的@Toomas 答案的基础上,我不得不对 Excel 2007 进行一些修改,但想出了以下内容:

    =EOMONTH(A1,0)-MOD(WEEKDAY(EOMONTH(A1,0))+1,7)
    

    假设星期五返回的 WEEKDAY 是 6,然后应用移位的 MOD 7 来获得正确的日期。

    【讨论】:

      【解决方案2】:

      试试这个公式:

      =IF(WEEKDAY(EOMONTH(A5;0);16)=7;EOMONTH(A5;0);EOMONTH(A5;0)-WEEKDAY(EOMONTH(A5;0);16))
      

      输入您要查找一个月中最后一个星期五的 A5 日期值。

      【讨论】:

        【解决方案3】:

        以下公式为单元格 A1 中的日期实现了这一点:

        =DATE(YEAR(A1),MONTH(A1)+1,0)+MOD(-WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0),2)-2,-7) 
        

        【讨论】:

          【解决方案4】:

          我来这里是为了寻找过去最近的星期五的公式,结果是=TODAY()-WEEKDAY(TODAY())-1

          【讨论】:

            【解决方案5】:
            =EOMONTH(TODAY(),0)-WEEKDAY(EOMONTH(TODAY(),0))-1
            

            这给出了本月的最后一个星期五。您可以将 Today() 的两个实例替换为您喜欢的任何日期,或者使用日期为任何其他月份的最后一个星期五的单元格引用。

            【讨论】:

              【解决方案6】:

              如果有人需要在明年(或未来几年)这样做:

              =EOMONTH(DATE(YEAR(TODAY())+1,MONTH(TODAY()),1),0)-MOD(WEEKDAY(EOMONTH(DATE(YEAR(TODAY())+1,MONTH(TODAY()),1),0))+1,7)
              

              【讨论】:

                【解决方案7】:

                这里会显示当月的最后一个星期五。

                如果日期是过去的,它将显示下个月的最后一个星期五。

                如果现在是 12 月,它会显示明年 1 月的星期五。

                =IF(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)+MOD(-WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),2)-2,-7)>=TODAY(), DATE(IF(MONTH(TODAY())+1>12,YEAR(TODAY()+1),YEAR(TODAY())),MONTH(TODAY())+1,0)+MOD(-WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),2)-2,-7), DATE(IF(MONTH(TODAY())=12,YEAR(TODAY())+1,YEAR(TODAY())),MONTH(IF(MONTH(TODAY())=12,1,MONTH(TODAY())))+1,0)+MOD(-WEEKDAY(DATE(IF(MONTH(TODAY())=12,YEAR(TODAY())+1,YEAR(TODAY())),MONTH(IF(MONTH(TODAY())=12,1,MONTH(TODAY())))+1,0),2)-2,-7))
                

                【讨论】:

                  【解决方案8】:

                  你可以试试

                  =DATE(YEAR(A1),MONTH(A1)+1,1)-1+CHOOSE(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,1)-1),-2,-3,-4,-5,-6,0,-1)
                  

                  查找本月的最后一个星期五。假设 A1 有日期。

                  【讨论】:

                    【解决方案9】:

                    太棒了!基本上,就像试图找到每月的第一个或第二个星期一一样,

                    =DATE(TheYear,5,1)+CHOOSE(WEEKDAY(DATE(TheYear,5,1)),1,0,6,5,4,3,2)
                    

                    返回每月的第一个星期一,在本例中为五月

                    但要找到该月的最后一个个工作日,在公式中,您从下个月开始并减去

                    =DATE(TheYear,6,1)-1+CHOOSE(WEEKDAY(DATE(TheYear,6,1)),-6,-5,-4,-3,-2,-1,0)
                    

                    返回五月的最后一个星期一

                    我有一个名为 TheYear 的单元格,我在其中输入我正在使用的年份,但你可以指向任何你想要年份的单元格(例如 A1)。

                    我不知道为什么指向星期几的指针顺序相反,但要找到日期(例如星期二而不是星期一),更改这些数字的顺序,但它们必须保持顺序。例如,11 月的第四个星期四:

                    =DATE(TheYear,11,1)+21+CHOOSE(WEEKDAY(DATE(TheYear,11,1)),4,3,2,1,0,6,5)
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-03-21
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多