Mik*_*ter 5 excel date excel-formula
带有示例数据的电子表格在此处链接.
假设您有3个日期"4/1/2015","6/30/2015"和"5/1/2016"设置为Excel中的日期单元格格式.
您可以使用逻辑运算符(<,>等)直接比较日期.如果"4/1/2015"在单元格A1中并且"6/30/2015"在单元格A2中,则此公式=IF(A1>A2,"True","False")评估为"假".
但是,您无法将日期与字符串文字进行比较(即"3/31/2015").如果"4/1/2015"在单元格A1中,则此公式=IF(AND(A1>="4/01/2015",A1<="6/30/2015"),"True","False")始终计算为"False".
如上所述,为什么通过对字符串文字附加算术运算呢?Excel允许比较以不同格式存储的日期?例如,如果"4/1/2015"在单元格A1中,则此公式=IF(AND(A1>="4/01/2015"+0,A1<="6/30/2015"+0),"True","False")将评估为"True".
日期存储为双倍 - 从1899年12月31日开始的天数加上一个小数,即从午夜起经过的时间百分比.现在,我打的是42221.50049,这是自1899年以来42,221天和中午之后的一点点.
您只看到日期格式,因为您有一个应用于该单元格的日期格式.它仍然是一个数字下面.但日期有点特别.日期也会显示在Excel的公式栏中,而不是数字,而是日期.其他格式化的数字不显示这种方式.Excel正试图在将日期存储为双打之间走一条细线,向用户展示他们期望看到的内容.
Excel具有内置类型强制.TC让你做的事情没有超级严谨的数据类型.基本上,如果Excel可以弄清楚如何做你所要求的,它就会做到.如果要求添加两个字符串,"1" + "1"Excel会将每个字符串强制转换为一个数字,以便它可以执行操作并为您提供2.如果你问"1" + "a",你会得到一个#VALUE错误,因为Excel无法弄清楚如何将"a"强制转换为有效操作数的东西.
比较不会引发强制.因此="1"=1将返回False - 字符串不等于数字并且使比较不会触发Excel将任一值强制转换为其他类型.
在您的情况下A1>="04/01/2015",Excel似乎是一个很好的机会,可以强制查看实际日期的日期.但事实并非如此.这就是它的工作方式.但是在日期中添加零(记住只是一个双倍),将其强制转换为日期,并且您将A1与强制转换为日期的内容进行比较.
日期的字符串文字似乎适用于许多环境,如SQL Server.但他们通常不在Excel中.IMO最好使用DATE()函数,如A1>=DATE(2015,4,1).