Excel制作万年历.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Office 2007是微软Office产品史上最具创新与革命性的一个版本。全新设计的用户界面、稳定安全的文件格式、无缝高效的沟通协作。 Excel是Office套件中的一个重要组件之一。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的微机数据处理软件。 日历分为阴历和阳历。阳历的历年为一个回归年,现时国际通用的公历(格里高历)即为太阳历的一种,亦简称为阳历;阴历亦称月亮历,或称太阴历,其历月是一个朔望月,历年为12个朔望月,其大月30天,小月29 天;中国的农历就是阴阳历的一种。 如何在Excel实现万年历是对Office能力的综合运用,又是分析问题并进行求解的一系列过程。 !--[if !supportLists]--2.?? !--[endif]--分析 !--[if !supportLists]--2.1???????? 整体构思 在进行整体构思之前,不妨我们先看看多数日历是怎样的情形,其中: !--[if !supportLists]--1、?? !--[endif]--上面居中为当前年份。 !--[if !supportLists]--2、?? !--[endif]--然后为当年的12个月份,至于每行为3个月还是4个月取决于可见界面的大小和美观。 !--[if !supportLists]--3、?? !--[endif]--总所周知,一周则为7天,每个月最大31天,最小28天;如果1号为周六或周日的话,则该月可能要跨越6周;因此每个月最大的跨越为六周,事实上我们找一下其它日历的模板,就会发现一般都是六周。所以我们可以把每个月视为一个7*6的单元格集合。 !--[if !supportLists]--2.2?????? !--[endif]--算法问题 当我们确定了每个月事实上为7*6的单元格集合后,我们接下来要做以下几件事情: !--[if !supportLists]--1、?? !--[endif]--如何定位和填充相应的每月的7*6单元格 在单纯的Excel表中,我们很难采用逻辑判断和循环的方式获取在7*6单元格集合中的第一个星期一应该是哪一天;但我们知道这个7*6单元格所在月的第一天即1号却是固定的,同样当日期固定后,该日期所在的星期几也是固定的,假设2010-01-01为星期五,那星期一是几号呢?很显然,为2010年1月1号向前推4天即2009年12月28号,星期二则为1月1号向前推3天,以此类推,可以推到整个42个单元格中,只不过超过当月第一天的日期则向后推了。 如果我们换个思路可能更好些,在第一个7*6单元格集合中的首个星期一为2010年1月1号向前推5天即星期五,然后加1天,这也是理所当然的求法,那么星期二则为1月1号向前推5天,然后加2天,以此类推,推倒第42个单元格中则为1月1号向前推5天,然后加42天了,从1到42则为一个整数的序列;这样就变成Excel更擅长的计算方式了。 !--[if !supportLists]--2、?? !--[endif]--如何屏蔽非当月的日期 大家也许会注意到在这个7*6的单元格集合中,一定会混入不属于这个月的日期,怎么把这些不属于本月的日期去除呢?如果我们用函数来实现的话,也不是不可能,只不过过于复杂。 幸好Excel提供了条件格式,条件格式的目的就是为符合或不符合相应条件的单元格提供该单元格的格式化需求,如果我们将小于当月第一天,或者大于等于下个月第一天值的单元格字符设置为白色字体,同时将这些单元格的背景色也置为白色,岂不是看不到了嘛。 !--[if !supportLists]--3、?? !--[endif]--农历问题 农历问题是属于典型的算法问题,我还从未见到在单纯的Excel表格中使用函数和表达式就能实现农历算法的。很幸运的是,Office提供了强大的编程语言VBA,再加上强大的互联网搜索引擎,我们很容易就能找到并实现农历的功能。 关于如何对不在当月的农历日期进行屏蔽,详情见步骤。 !--[if !supportLists]--2.3???????? !--[endif]--显示和实际数据存储的关系 如果仅看以上最终版本,我们很可能认为“2010年日历”为字符串,“1月份”也为字符串,而月份中的日期为数字,实际上除了“一、二、三、四、五、六、日”为字符串外,年份、月份均为数字类型,而日期则为日期类型;在Excel表中数据的展现方式与存储可以表现迥异,当然展现方式也不能完全孤立于其存储数据的类型和内容。 只有理解了以上困惑和难点,我们才知道如何下手开始工作。 !--[if !supportLists]--3.?? !--[endif]--步骤 !--[if !supportLists]--3.1??????? !

文档评论(0)

80092355km + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档