ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

关于技巧187中日期函数的几个疑问

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-6-20 17:10 | 显示全部楼层 |阅读模式

函数mod(A2-2,7)+1可以得到A2单元格中日期是星期几,可是A2为什么要减去2 ?(附件技巧187中sheet1 MOD那列)

=$A2-WEEKDAY($A2,2)可以得到返回上一个星期天日期,为什么? 因为在我看来取得是相同的单元格(附件技巧187中sheet2)

=DAY(TODAY()-DAY(TODAY()))可以得到上月的天数 ,为什么? 因为是相同的参数,怎么就会得到上月天数,这是什么逻辑关系在里面?

本人才疏学浅,请各位多多指教

6Fp4tWco.rar (2.79 KB, 下载次数: 8)
[此贴子已经被gouweicao78于2007-6-21 11:51:27编辑过]

TA的精华主题

TA的得分主题

发表于 2007-6-20 17:41 | 显示全部楼层

日期是数值的一种特殊格式,比如2007-6-20,设置格式为常规,显示为39253,表示从1900-1-1开始算起,到2007-6-20共39253天,数字1代表1天。——这是日期运算的基础准则。

1、关于MOD请参考:

  • MOD函数在星期几判断的应用
  • 一个星期是7天,将日期这个数值对7求余数,会得到0、1……6这么7种结果。其中0对应周六、1对应周日,2~6分别对应周一至周五。如果A2-2,即将日期减去2之后,则这个循环挪了2个步长,0就对应周一,6对应周日,再加1,刚好是1对应周一、7对应周日。

    2、=$A2-WEEKDAY($A2,2)可以得到返回上一个星期天日期

    Weekday(A2,2)返回的也是1~7代表的周一至周日,所以A2日期如果是星期三,减去3就是往前倒回去3天,上周日的日期。

    3、=DAY(TODAY()-DAY(TODAY()))

    DAY(TODAY())——返回今天(系统日期)的“日”数,如2007-6-20中的20

    TODAY()-DAY(TODAY())就是当前日期往前倒回去20天,也就是2007-5-31,DAY(2007-5-31)得到的就是31——也就是上月的天数。

    TA的精华主题

    TA的得分主题

    发表于 2007-6-20 18:01 | 显示全部楼层

    TA的精华主题

    TA的得分主题

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

    多谢版主亲自回复,只是本人测试一下: 如果

    A2=6, 则=TEXT(A2,"e-mm-d")=1900-01-06(查看万年历为星期六),而运行=MOD(A2-2,7)+1=5,什么原因?

    TA的精华主题

    TA的得分主题

    发表于 2007-6-21 11:42 | 显示全部楼层
    [广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
    QUOTE:
    以下是引用danis在2007-6-21 10:51:39的发言:

    多谢版主亲自回复,只是本人测试一下: 如果

    A2=6, 则=TEXT(A2,"e-mm-d")=1900-01-06(查看万年历为星期六),而运行=MOD(A2-2,7)+1=5,什么原因?

    “错误原因已查明,是由于EXCEL本身的错误(1900-2-29不存在,而EXCEL却存在,导致了1900年1至2月的序列数不对、星期不对,如1900-2-28应为星期三 ,而EXCEL为星期二)。”

    ——这一点,Excel2003函数公式宝典还是哪里有说过,意思是MS并非不知道这个错误,但是,作为一个拥有全球那么多用户的MS来说,调整一个基本不会用得到的日期与由此产生的用户数据影响问题相比,MS还是选择了将错就错。

    也就是说1900-3-1前的日期星期几是错误的。

    [此贴子已经被作者于2007-6-21 11:46:51编辑过]

    TA的精华主题

    TA的得分主题

    发表于 2007-6-21 12:53 | 显示全部楼层
    [广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
    QUOTE:
    以下是引用gouweicao78在2007-6-21 11:42:30的发言:

    “错误原因已查明,是由于EXCEL本身的错误(1900-2-29不存在,而EXCEL却存在,导致了1900年1至2月的序列数不对、星期不对,如1900-2-28应为星期三 ,而EXCEL为星期二)。”

    ——这一点,Excel2003函数公式宝典还是哪里有说过,意思是MS并非不知道这个错误,但是,作为一个拥有全球那么多用户的MS来说,调整一个基本不会用得到的日期与由此产生的用户数据影响问题相比,MS还是选择了将错就错。

    也就是说1900-3-1前的日期星期几是错误的。


    多谢草版主解释,学习了

    [em17][em27]

    TA的精华主题

    TA的得分主题

     楼主| 发表于 2007-6-21 14:31 | 显示全部楼层

    TA的精华主题

    TA的得分主题

    发表于 2007-6-21 15:11 | 显示全部楼层
    [广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

    补充:

    《精粹》P311页,闰年判断,右下角提醒注意:

    1900年应该是“平年”,但出于与其它软件兼容以及不引起众多用户更改造成混乱的考虑,Excel将之处理为“闰年”。

    这也是对1900-2-29的一个说明。

    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-11-25 09:29 , Processed in 0.036572 second(s), 10 queries , Gzip On, MemCache On.

    Powered by Discuz! X3.4

    © 1999-2023 Wooffice Inc.

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

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

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