ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7978|回复: 9

[推荐] 用EXCEL制作一份万年历

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-24 14:01 | 显示全部楼层 |阅读模式
用EXCEL制作一份万年历

本文所涉及到的函数有:
  1、AND (logical1,logical2, ...)
  2、DATE (year,month,day)
  3、DAY (serial_number)
  4、IF (Logical,Value_if_true,Value_if_false)
  5、INT (number)
  6、MONTH (serial_number)
  7、NOW ()
  8、OR (logical1,logical2, ...)
  1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。
  2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。
  选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

  注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。
3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。

  选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。

  注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。
  ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。

  4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。
  同样的方法,在J1至J12单元格中输入1—12月份序列。

  5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。

  同样的操作,将F13单元格数据有效性设置为“=$J$1:$J$12”序列。
  注意:经过这样的设置以后,当我们选中D13(或F13)单元格时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要查询的年、月值。
6、选中A2单元格(不一定非得是A2哟),输入公式:=IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100<>INT(D13/100))),29,28),IF(OR(F13=4,F13=6,F13=9,F13=11),30,31)),用于获取查询“月份”所对应的天数(28、29、30、31)。
注意:上述函数的含义是:如果查询“月份”为“2月”(F13=2)时,并且“年份”数能被400整除[D13/400=INT(D13/400)],或者(OR)“年份”能被4整除,但不能被100整除[AND(D13/4=INT(D13/4),D13/100<>INT(D13/100))],则该月为29天(也就是我们通常所说的“闰年”),否则为28天。如果“月份”不是2月,但是“4、6、9、11”月,则该月为30天。其他月份天数为31天。
7、选中B2单元格,输入公式:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=B3,1,0)。再次选中B2单元格,用“填充柄”将上述公式复制到C2—H2单元格中。
注意:①上述B2公式的含义是:如果“查询年月”的第1天是星期“7”(WEEKDAY(DATE)($D$13,$F$13,1),2)=B3)时,在该单元格显示“1”,反之显示“0”),为“查询年月”获取一个对照值,为下面制作月历做准备。
  ②上述C2—H2单元条中公式的含义与B2相似。
  ③在用拖拉法复制公式时,公式“绝对引用”的单元格(加了“$”号的,如“$D$13”等)不会发生改变,而“相对引用”的单元格(没有加“$”号的,如“B3”等),则会智能化地发生变化,例如在E2单元格中,“B3”变成了“E3”,整个公式成为:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=E3,1,0)。
8、选中B6单元格,输入公式:=IF(B2=1,1,0)。选中B7单元格,输入公式:=H6+1。用“填充柄”将B7单元格中的公式复制到B8、B9单元格中。
分别选中B10、B11单元格,输入公式:=IF(H9>=A2,0,H9+1)和=IF(H10>=A2,0,IF(H10>0,H10+1,0))。
  选中C6单元格,输入公式:=IF(B6>0,B6+1,IF(C2=1,1,0))。用“填充柄”将C6单元格中的公式复制到D6—H6单元格中。   
  选中C7单元格,输入公式:=B7+1。用“填充柄”将C7单元格中的公式复制到C8、C9单元格中。同时选中C7—C9单元格,用“填充柄”将其中的公式复制到D7—H9单元格中。
  选中C10单元格,输入公式:=IF(B10>=$A$2,0,IF(B10>0,B10+1,IF(C6=1,1,0)))。用“填充柄”将C10单元格中的公式复制到D10—H10单元格和C11单元格中。
  至此,整个万年历(其实没有万年,只有从1900—2050的151年)制作完成。
  下面,我们一起来将其装饰一下。
9、选中相应的单元格,利用工具栏上的相应按钮,设置好字体、字号、字符颜色等。
  选中相应的单元格,打开“单元格格式”对话框,在“对齐”标签下,设置好单元格中文本的对齐方式(通常情况下,垂直对齐可以一次性设置为“居中”,水平“对齐”根据具体情况设置)。
  同时选中I列和J列,右击鼠标,选“隐藏”选项,将相应的列隐藏起来,使得界面更加友好。用同样的方法,将第2和第3行也隐藏起来。
  10、选中B5—H11单元格区域,打开“单元格格式”对话框,进入“边框”标签,选择好“颜色、样式”,并“预置”好边框范围,然后“确定”退出,为月历加上边框。
  11、执行“工具→选项”命令,打开“选项”对话框(如图4),在“视图”标签下(通常是默认标签),清除“零值”和“网格线”复选框中的“∨”号,“确定”退出,让“零值”和“网格线”不显示出来。

  12、将B14—H14和B15—H15单元格分别合并成一个单元格,并在B14和B15单元格中输入公式:=IF(AND(MONTH(D1)=1,DAY(D1)=1),"新的新气象!加油呀!",IF(AND(MONTH(D1)=3,DAY(D1)=8),"向女同胞们致敬!",IF(AND(MONTH(D1)=5,DAY(D1)=1),"劳动最光荣",IF(AND(MONTH(D1)=5,DAY(D1)=4),"青年是祖国的栋梁",IF(AND(MONTH(D1)=6,DAY(D1)=1),"原天下所有的儿童永远快乐",0)))))和=IF(AND(MONTH(D1)=7,DAY(D1)=1),"党的恩情永不忘",IF(AND(MONTH(D1)=8,DAY(D1)=1),"提高警惕,保卫祖国!",IF(AND(MONTH(D1)=9,DAY(D1)=10),"老师,您辛苦了!",IF(AND(MONTH(D1)=10,DAY(D1)=1),"祝我们伟大的祖国繁荣富强",0))))。
  设置好B14和B15单元格的字体、字号、字符颜色。
  注意:上述公式的含义是:如果当前日期逢到相关的节日(如“元旦”等),则在B14或B15单元格显示出相应的祝福语言(如“新的新气象!加油呀!”,参见图5)。

由于IF函数只能嵌套7层,而节日数量超过7个(我们这里给出了9个),因此,我们用两个单元格来显示。     
13、执行“格式→工作表→背景”命令,打开“工作表背景”对话框(如图6),选择一张合适的图片后,按“插入”按钮,将其衬于工作表文字下面。

14、在按住“Ctrl”键的同时,单击D13和F13单元格,同时选中两个单元格,开“单元格格式”对话框,切换“保护”标签(如图7),清除“锁定”前面复选框中的“∨”号,“确定”退出。

  15、执行“工具→保护→保护工作表”命令,打开“保护工作表”对话框(如图8),两次输入密码后,确定退出。

  注意:经过这样的设置后,整个工作表中除了D13和F13单元格中的内容可以改变外,其它单元格中的内容均不能改变,保证了万年历的使用可靠性。

用EXCEL制作一份万年历.rar

243.42 KB, 下载次数: 1223

万年历 EXCEL

TA的精华主题

TA的得分主题

发表于 2011-3-24 14:16 | 显示全部楼层
本帖最后由 wshcw 于 2014-9-2 10:20 编辑

这个贴子有点老了。参考:

我的日历贴子


[ 本帖最后由 wshcw 于 2011-3-24 14:19 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-3-24 14:26 | 显示全部楼层
参考,另一个附件(千年日历公式减肥版):

[ 本帖最后由 wshcw 于 2011-3-24 14:28 编辑 ]

千年日历(公式减肥总结版).rar

10.41 KB, 下载次数: 484

TA的精华主题

TA的得分主题

发表于 2011-10-21 20:43 | 显示全部楼层
版主的不错 可惜没有农历 也没有二十四节气日 不知能加以改进吗

TA的精华主题

TA的得分主题

发表于 2011-12-13 15:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-18 16:28 | 显示全部楼层
xiaoyan3898 发表于 2011-10-21 20:43
版主的不错 可惜没有农历 也没有二十四节气日 不知能加以改进吗

http://club.excelhome.net/thread-81926-8-1.html

看下这个

TA的精华主题

TA的得分主题

发表于 2011-12-18 19:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-5-1 16:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-11-29 10:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-1-4 15:35 | 显示全部楼层
本帖最后由 mythras 于 2019-1-4 15:47 编辑

非常好用,非常强大,请问是如何把当月月首、月末其他月的日期自动显示为灰色,节假日自动显示为红色,节气自动显示为蓝色,查询日自动为蓝色底色的?打算在您的data基础上,做一个一张可以自动变的A4日历的,最好还能根据当年放假安排自动区分底色
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-20 14:25 , Processed in 0.045123 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表