ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 胡剑0227

[分享] 练剑,拿日期函数开刀(数组公式初级)7小题(胡剑开课了...)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-7-28 23:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
第四题交作业

今年的感恩节是几号?感恩节是每年11月份的第4个星期四(一个月可能有5个星期四)

数组公式
  1. =MIN(IF(WEEKDAY(DATE(2011,11,ROW(1:30)),2)=4,DATE(2011,11,ROW(1:30)),""))+21
复制代码
思路:先找出第一个星期四,然后加上21天,就得到第4个星期四

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-29 09:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 181楼 ringdove 的帖子

恩,这样考虑挺好,思路很顺畅了,呵呵

TA的精华主题

TA的得分主题

发表于 2011-7-29 09:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
胡版大作,拜读

TA的精华主题

TA的得分主题

发表于 2011-7-29 10:26 | 显示全部楼层
第五题交作业

某护士是星期六和星期一休息的,今天是2011-5-16日,她结婚定在2011-10-4号,所以准备工作到2011-9-30再休息(10月1日正式休息)。我们不考虑其他假期的休息,请问她在婚前还要工作几天?

数组公式
  1. =SUM(1-(WEEKDAY(ROW(INDIRECT(DATE(2011,5,16)&":"&DATE(2011,9,30))),2)=1)-(WEEKDAY(ROW(INDIRECT(DATE(2011,5,16)&":"&DATE(2011,9,30))),2)=6))
复制代码

TA的精华主题

TA的得分主题

发表于 2011-7-29 17:55 | 显示全部楼层
第六题交作业

以星期一作为一个星期的开始,那么请设计一个公式返回本周处于本年度第几周

数组公式
  1. =IF(WEEKDAY(TODAY(),2)=7,SUM((WEEKDAY(DATE(YEAR(TODAY()),1,ROW($1:$366)),2)=7)*(DATE(YEAR(TODAY()),1,ROW($1:$366))<=TODAY())),SUM((WEEKDAY(DATE(YEAR(TODAY()),1,ROW($1:$366)),2)=7)*(DATE(YEAR(TODAY()),1,ROW($1:$366))<=TODAY()))+1)
复制代码
思路:如果今天是星期天,就计算从1月1号到现在星期天的天数,否则就是1月1号到现在星期天的天数加1

看了答案之后,发现思路是对了,但是公式不够简化。根深蒂固的认为(WEEKDAY(TODAY(),2)=7或者(WEEKDAY(TODAY(),2)<>7的返回值为TRUE或FALSE,而忽略了1和0两个值,如果把1和0运用到公式中就能简化不少

数组公式
  1. =SUM((DATE(YEAR(TODAY()),1,ROW($1:$366))<=TODAY())*(WEEKDAY(DATE(YEAR(TODAY()),1,ROW($1:$366)),2)=7))+(WEEKDAY(TODAY(),2)<>7)
复制代码

[ 本帖最后由 ringdove 于 2011-7-29 21:00 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-7-29 21:18 | 显示全部楼层
第七题交作业

先看看一下三个公式,自己感觉一下返回值,然后到单元格中实现一下,看看是否有什么启发       
TEXT(2011-5-16,"yyyy-mm-dd")  返回2011-5-16=1990对应的时间点,以yyyy-mm-dd的形式显示
TEXT("2011-5-16","yyyy-mm-dd"),返回2011-05-16
TEXT("2011年5月16日","yyyy-mm-dd"),这个不知道为什么返回结果还是2011年5月16日

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-29 21:21 | 显示全部楼层

回复 185楼 ringdove 的帖子

呵呵,能不能做出来,思路对头不对头是质的变化,公式精简与否只是量的变化。本帖主要希望帮大家建立处理日期问题的一般思路,如果现在碰到日期问题能在心态上不怕了,那么就成功了。

TA的精华主题

TA的得分主题

发表于 2011-7-29 22:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
2011-7-29占为学习,呵呵

TA的精华主题

TA的得分主题

发表于 2011-8-14 23:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
关键点:日期本质上就是数值,EXCEL能对date(year,month,day)中的month,day参数进行智能地解读。

TA的精华主题

TA的得分主题

发表于 2011-10-2 18:09 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 09:38 , Processed in 0.032049 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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