万载县

首页 » 常识 » 诊断 » 不用万年历快速推算日柱干支法
TUhjnbcbe - 2020/12/21 19:12:00
北京中科白殿风医院怎样 http://m.39.net/pf/bdfyy/bdfzj/

哈喽,大家好!

今天和大家分享一个比较综合的函数应用--万年历。

日历随处可见,但你有没有想过怎么用函数来制作呢。

PS:本次所需技能如下:

1、条件格式设置。

2、隐藏函数DateDif。

3、返回一周中的第几天函数Weekday。

步骤分解:

DATEDIF(1,$B$1"-"$D$1,"d")

该步骤主要用好了DateDif函数,主要返回2个日期间的相隔天数,该函数有3参数,DateDif(开始日期,结束日期,要的结果表示),本例中的开始日期是-1-1,结束日期是年10月1日,结果返回相差的天数"d")

因-1-1的序列数为1,故,用1表示;

因-8会被Excel识别为-8-1,故,只连接了年和月。

此公式得出的结果是的序列数,而该序列数对应的日期值是-7-31。

各位,重点来了,

-7-31在日历中正好是上个月的最后一天。

WEEKDAY(DATEDIF(1,$B$1"-"$D$1,"d"),2)

用Weekday函数得出的日期-7-31是周几,图中很明显是周二。

IF(WEEKDAY(DATEDIF(1,$B$1"-"$D$1,"d"),2)=6,DATEDIF(1,$B$1"-"$D$1,"d")-WEEKDAY(DATEDIF(1,$B$1"-"$D$1,"d"),2),DATEDIF(1,$B$1"-"$D$1,"d"))

该步骤判断中得出的是周几,即:如果得出日期的星期=6的话,就用得出的日期减去星期几,就可以得到日历左上角的日期,不然就是左上角的日期。

=IF(WEEKDAY(DATEDIF(1,$B$1"-"$D$1,"d"),2)=6,DATEDIF(1,$B$1"-"$D$1,"d")-WEEKDAY(DATEDIF(1,$B$1"-"$D$1,"d"),2),DATEDIF(1,$B$1"-"$D$1,"d"))+ROW()*7-21+COLUMN()-1

此公式蓝色部分是至得出日历左上角日期的公式,红色部分则是第4个步骤。用日历左上角日期+相应的行数和列数,使其动态的自加减。

Row()*7当前单元格行号*7,*7是因为左侧相邻日期间隔是7天。

Row()*7-21,-21是因为是从第3行开始的,所以第三行不需要加,所以-21。

如果是从第4行开始的,则Row()*7-28;

如果是从第5行开始的,则Row()*7-35;

如果是从第6行开始的,则Row()*7-42;

以此类推…………

COLUMN()-1,是从第1列开始的,所以-1,

如果是从第2列开始的,则COLUMN()-2;

如果是从第3列开始的,则COLUMN()-3;

以此类推…………

需要注意的地方:

1、对年和月单元格的引用需要“绝对引用”;

本文的核心:

=DATEDIF(1,$B$1"-"$D$1,"d")

=DATEDIF(1,"-8-1","d")返回-7-31,即上个月的最后一天。

=DATEDIF(1,"-11-1","d")返回-10-31,即上个月的最后一天。

另,=TODAY()返回今天的日期

=DATEDIF(1,TODAY(),"d")返回昨天的日期。

本文的函数思路:

(1)先用DATEDIF函数得出上月最后一天的日期。

(2)根据上月最后一天,用Weekday函数得出是周几,这样就得出了该日期在日历中显示的“大概”位置。

(3)根据一周不过7天规则,如果上月最后一天是周日(7),则正好是左上角的日期;如果最后一天不是周日(7),则用7减去该日(1到6),则得出左上角日期。

(4)得出左上角日期后,就可以自相加了,函数:ROW()*7-21+COLUMN()-1。

好了,今天的分享到此结束,感谢小伙们们围观捧场。

图文作者:赵中山

预览时标签不可点收录于话题#个上一篇下一篇
1
查看完整版本: 不用万年历快速推算日柱干支法