You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel中AND公式未按预期工作:日期拼接值比较异常求助

问题根源:文本字符串 vs 数字比较

哦,这个坑我之前踩过!你得到FALSE的核心原因是:用&连接月份和年份后,生成的是文本字符串,Excel在比较时遵循的是文本排序规则,而不是数字大小规则。

为什么会这样?

你看,"72019"和"102019"作为文本比较时,Excel会从第一个字符开始逐个对比:

  • 第一个字符"7"的ASCII码值比"1"大,所以它会直接判定"72019" > "102019",完全不会管后面的数字组合。这就是明明数字上72019更小,却返回FALSE的原因。

解决方法

方法1:将文本转换为数字比较

用VALUE()函数把连接后的字符串转成数字,让Excel按数字规则比较:

=AND(VALUE(MONTH(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)) & YEAR(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE))) <= VALUE(MONTH(Octobre!$A$2) & YEAR(Octobre!$A$2)))

方法2:直接处理日期(更推荐)

拆分月份和年份再连接是绕远路,直接把日期转换为「当月第一天」来比较,逻辑更清晰,也避免文本比较的坑:

=AND(DATE(YEAR(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)),MONTH(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)),1) <= DATE(YEAR(Octobre!$A$2),MONTH(Octobre!$A$2),1))

如果你的Excel支持LET函数(365/2021及以上版本),还可以简化重复的VLOOKUP调用,让公式更易读:

=LET(
    stagiaireDate, VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE),
    targetDate, Octobre!$A$2,
    DATE(YEAR(stagiaireDate),MONTH(stagiaireDate),1) <= DATE(YEAR(targetDate),MONTH(targetDate),1)
)

内容的提问来源于stack exchange,提问作者TourEiffel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:28:22