Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel if语句中的逻辑测试如何评估不同格式的日期?_Excel_Date_Excel Formula - Fatal编程技术网

Excel if语句中的逻辑测试如何评估不同格式的日期?

Excel if语句中的逻辑测试如何评估不同格式的日期?,excel,date,excel-formula,Excel,Date,Excel Formula,链接带有示例数据的电子表格 假设您将3个日期“2015年4月1日”、“2015年6月30日”和“2016年5月1日”设置为Excel中的日期单元格格式 您可以使用逻辑运算符(、等)直接比较日期。如果“2015年4月1日”在单元格A1中,“2015年6月30日”在单元格A2中,则此公式=如果(A1>A2,“真”、“假”)计算结果为“假” 但是,您不能将日期与字符串文字(即“3/31/2015”)进行比较。如果“4/1/2015”在单元格A1中,则此公式=If(和(A1>=“4/01/2015”,A

链接带有示例数据的电子表格

假设您将3个日期“2015年4月1日”、“2015年6月30日”和“2016年5月1日”设置为Excel中的日期单元格格式

您可以使用逻辑运算符(、等)直接比较日期。如果“2015年4月1日”在单元格A1中,“2015年6月30日”在单元格A2中,则此公式
=如果(A1>A2,“真”、“假”)
计算结果为“假”


但是,您不能将日期与字符串文字(即“3/31/2015”)进行比较。如果“4/1/2015”在单元格A1中,则此公式
=If(和(A1>=“4/01/2015”,A1=“4/01/2015”+0,A1日期被存储为两倍-从1899年12月31日起的天数加上一个分数,即从午夜起经过的时间百分比。现在,我在42221.50049处输入这个数字,这是从1899年开始的42221天,在中午之后一点

您之所以看到日期格式,是因为您对该单元格应用了日期格式。它下面仍然是一个数字。但日期有点特殊。日期也显示在Excel的公式栏中,不是数字,而是日期。其他格式的数字不会以这种方式显示。Excel正试图在将日期存储为双倍和显示日期之间走一条微妙的路线用户可以看到他们期望看到的内容

Excel具有内置的类型强制。TC允许您在处理数据类型时不必过于严格。基本上,如果Excel能够解决如何执行您要求的操作,它就会完成。如果您要求添加两个字符串,
“1”+“1”
Excel将这些字符串强制为一个数字,这样它就可以执行操作并给您提供
2
。如果您询问
“1”+“a”
,您将得到一个#值错误,因为Excel无法找出如何将“a”强制为有效操作数

比较不会触发强制。因此
=“1”=1
将返回False-字符串不等于数字,进行比较不会触发Excel将任一值强制为其他类型

在您的例子中,
A1>=“04/01/2015”
似乎是Excel将看起来像日期的内容强制转换为实际日期的绝佳机会。但事实并非如此。这就是它的工作方式。但是,将日期加零(记住,这只是一个双精度)会将其强制转换为日期,您只需将A1与强制转换为日期的内容进行比较

日期的字符串文字似乎在很多环境中都能工作,比如SQL Server。但在Excel中通常不能。在我看来,最好使用DATE()函数,如
A1>=DATE(2015,4,1)