excel 多个if,and,or函数嵌套出了问题,求高手指教!
=IF(AND(K7>=2020/1/1,K7<=2020/12/31,I7="优秀"),EDATE(O7,-6),IF(AND(K7>=2019/1/1,K7<=201...
=IF(AND(K7>=2020/1/1,K7<=2020/12/31,I7="优秀"),EDATE(O7,-6),IF(AND(K7>=2019/1/1,K7<=2019/12/31,H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(K7>=2019/1/1,K7<=2019/12/31,H7="优秀"),EDATE(O7,-6),IF(AND(K7>=2019/1/1,K7<=2019/12/31,I7="优秀"),EDATE(O7,-6),O7))))
展开
6个回答
展开全部
亲,K7>=2020/1/1这样写是不对的,因为2020/1/1这样写是文本必须要打上双引号,文本型日期不能直接比较大小,所以还要加上负负号,将文本日期转化成日期的数值。
要么写成K7>=DATE(2020,1,1)的样子,
要么写成K7>=--"2020/1/1"的样子。
你的公式修改后是这样的:
=IF(AND(K7>=--"2020/1/1",K7<=--"2020/12/31",I7="优秀"),EDATE(O7,-6),IF(AND(K7>=--"2019/1/1",K7<=--"2019/12/31",H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(K7>=--"2019/1/1",K7<=--"2019/12/31",H7="优秀"),EDATE(O7,-6),IF(AND(K7>=--"2019/1/1",K7<=--"2019/12/31",I7="优秀"),EDATE(O7,-6),O7))))
因为你的条件中判断的是整年的,只判断年份即可,所以你这条公式可以继续优化:
=IF(AND(YEAR(K7)=2020,I7="优秀"),EDATE(O7,-6),IF(AND(YEAR(K7)=2019,H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(YEAR(K7)=2019,H7="优秀"),EDATE(O7,-6),IF(AND(YEAR(K7)=2019,I7="优秀"),EDATE(O7,-6),O7))))
要么写成K7>=DATE(2020,1,1)的样子,
要么写成K7>=--"2020/1/1"的样子。
你的公式修改后是这样的:
=IF(AND(K7>=--"2020/1/1",K7<=--"2020/12/31",I7="优秀"),EDATE(O7,-6),IF(AND(K7>=--"2019/1/1",K7<=--"2019/12/31",H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(K7>=--"2019/1/1",K7<=--"2019/12/31",H7="优秀"),EDATE(O7,-6),IF(AND(K7>=--"2019/1/1",K7<=--"2019/12/31",I7="优秀"),EDATE(O7,-6),O7))))
因为你的条件中判断的是整年的,只判断年份即可,所以你这条公式可以继续优化:
=IF(AND(YEAR(K7)=2020,I7="优秀"),EDATE(O7,-6),IF(AND(YEAR(K7)=2019,H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(YEAR(K7)=2019,H7="优秀"),EDATE(O7,-6),IF(AND(YEAR(K7)=2019,I7="优秀"),EDATE(O7,-6),O7))))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题的根本点在于你不明白日期函数的概念和表达!而且,你这样直接用公式绕圈圈是很难学习和达到目标效果要求的!最好是把数据结构和逻辑说清楚!
根据你现有数据提供情况,原始的公式应该改为:
=IF(AND(YEAR(K7)=2020,I7="优秀"),EDATE(O7,-6),IF(AND(YEAR(K7)=2019,H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(YEAR(K7)=2019,H7="优秀"),EDATE(O7,-6),IF(AND(YEAR(K7)=2019,I7="优秀"),EDATE(O7,-6),O7))))
其实,按你的效果图,公式是可以更巧妙些,改为:
=EDATE(O7,-IF((YEAR(K7)=2019)*(H7="优秀")*(I7="优秀"),12,IF((YEAR(K7)=2019)*((H7="优秀")+(I7="优秀"))+(YEAR(K7)=2020)*(I7="优秀"),6,0)))
也许,逻辑更清晰了吧…………
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if太多的话,尽量简化,我们看到返回结果只有3个,整合这些条件后,可简化如下
=IF(AND(YEAR(K7)>=2019,YEAR(K7)<=2020,COUNTIF(H7:I7,"优秀")=1),EDATE(O7,-6),IF(AND(YEAR(K7)=2020,COUNTIF(H7:I7,"优秀")=2),EDATE(O7,-12),O7))
=IF(AND(YEAR(K7)>=2019,YEAR(K7)<=2020,COUNTIF(H7:I7,"优秀")=1),EDATE(O7,-6),IF(AND(YEAR(K7)=2020,COUNTIF(H7:I7,"优秀")=2),EDATE(O7,-12),O7))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将公式中的类似K7>=2020/1/1修改为下面的形式之一
K7>=DATE(2020,1,1)
K7>=--"2020/1/1"
K7-"2020/1/1">=0
K7>="2020/1/1"+0
K7>="2020/1/1"-0
K7>="2020/1/1"*1
K7>="2020/1/1"/1
K7>="2020/1/1"^1
根据上面的公式3,将整个公式修改如下:
=IF(AND(K7-"2020/1/1">=0,K7-"2020/12/31"<=0,I7="优秀"),EDATE(O7,-6),IF(AND(K7-"2019/1/1">=0,K7-"2019/12/31"<=0,H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(K7-"2019/1/1">=0,K7-"2019/12/31"<=0,H7="优秀"),EDATE(O7,-6),IF(AND(K7-"2019/1/1">=0,K7-"2019/12/31"<=0,I7="优秀"),EDATE(O7,-6),O7))))
K7>=DATE(2020,1,1)
K7>=--"2020/1/1"
K7-"2020/1/1">=0
K7>="2020/1/1"+0
K7>="2020/1/1"-0
K7>="2020/1/1"*1
K7>="2020/1/1"/1
K7>="2020/1/1"^1
根据上面的公式3,将整个公式修改如下:
=IF(AND(K7-"2020/1/1">=0,K7-"2020/12/31"<=0,I7="优秀"),EDATE(O7,-6),IF(AND(K7-"2019/1/1">=0,K7-"2019/12/31"<=0,H7="优秀",I7="优秀"),EDATE(O7,-12),IF(AND(K7-"2019/1/1">=0,K7-"2019/12/31"<=0,H7="优秀"),EDATE(O7,-6),IF(AND(K7-"2019/1/1">=0,K7-"2019/12/31"<=0,I7="优秀"),EDATE(O7,-6),O7))))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询