单元格包含两个日期时的条件格式公式设置咨询
单元格包含两个日期时的条件格式公式设置咨询
嗨,针对你这个单元格里有两个日期的条件格式需求,我来给你拆解一下解决方案~
首先得明确:你的单元格里是文本形式的两个日期(比如01/12/2024 and 01/24/2024),所以第一步要把这两个日期分别提取出来,转换成Excel能识别的日期序列号,再套用你原来的判断逻辑——只要任意一个日期符合条件,就应用对应的格式。
一、适用于Excel 365/2021及以上版本(支持TEXTBEFORE/TEXTAFTER函数)
这些新函数能轻松拆分文本里的两个日期,操作更简洁:
1. 红色格式(任意一个日期已过期)
公式思路:判断第一个日期小于今天,或者第二个日期小于今天,同时确保单元格不为空
=AND(NOT(ISBLANK(L13)),OR(--TEXTBEFORE(L13," and ")<TODAY(),--TEXTAFTER(L13," and ")<TODAY()))
--的作用是把提取到的日期文本转换成Excel可计算的日期序列号TEXTBEFORE(L13," and ")提取第一个日期文本,TEXTAFTER提取第二个
2. 橙色格式(任意一个日期在未来3天内,含当天和第3天)
公式思路:判断第一个日期在TODAY()到TODAY()+3之间,或者第二个日期符合这个范围
=AND(NOT(ISBLANK(L13)),OR( AND(--TEXTBEFORE(L13," and ")>=TODAY(),--TEXTBEFORE(L13," and ")<=TODAY()+3), AND(--TEXTAFTER(L13," and ")>=TODAY(),--TEXTAFTER(L13," and ")<=TODAY()+3) ))
二、适用于旧版Excel(无TEXTBEFORE/TEXTAFTER函数)
用LEFT+FIND+MID组合来拆分日期:
1. 红色格式(任意一个日期已过期)
=AND(NOT(ISBLANK(L13)),OR( --LEFT(L13,FIND(" and ",L13)-1)<TODAY(), --MID(L13,FIND(" and ",L13)+5,LEN(L13))<TODAY() ))
FIND(" and ",L13)找到分隔符的位置,LEFT提取第一个日期;MID从分隔符后第5位(因为" and "是5个字符:空格+a+n+d+空格)开始提取第二个日期
2. 橙色格式(任意一个日期在未来3天内)
=AND(NOT(ISBLANK(L13)),OR( AND(--LEFT(L13,FIND(" and ",L13)-1)>=TODAY(),--LEFT(L13,FIND(" and ",L13)-1)<=TODAY()+3), AND(--MID(L13,FIND(" and ",L13)+5,LEN(L13))>=TODAY(),--MID(L13,FIND(" and ",L13)+5,LEN(L13))<=TODAY()+3) ))
额外提示
- 如果你的日期文本格式无法被
--转换,可以换成DATEVALUE()函数,比如把--TEXTBEFORE(...)改成DATEVALUE(TEXTBEFORE(L13," and ")) - 如果你要把这个条件格式应用到多个单元格,记得把公式里的
$L$13改成相对引用L13,这样格式会自动适配每行的单元格
备注:内容来源于stack exchange,提问作者Danny Zambrano
相关产品推荐
相关产品推荐

