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)))) 展开
 我来答
苗乔恩
科技发烧友

2021-07-26 · 电脑数码,办公应用爱好者。
苗乔恩
采纳数:9705 获赞数:14585

向TA提问 私信TA
展开全部

2020年1月1日的三种写法:

  1. 加双引号写法:"2020/1/1"

  2. 函数写法:DATE(2020,1,1)

  3. 数值写法:43831

注:加双引号属于文本写法,不能直接进行值比较,必须参与运算才能转换为日期进行运算,如:DATE(2020,1,1)="2020/1/1"是不成立的,但DATE(2020,1,1)-"2020/1/1"=0是成立的。

boyayes
2021-07-17 · TA获得超过4512个赞
知道大有可为答主
回答量:4231
采纳率:75%
帮助的人:1010万
展开全部
亲,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))))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我来也xsczd
科技发烧友

2021-07-19 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1.2万
采纳率:66%
帮助的人:2023万
展开全部

问题的根本点在于你不明白日期函数的概念和表达!而且,你这样直接用公式绕圈圈是很难学习和达到目标效果要求的!最好是把数据结构和逻辑说清楚!

根据你现有数据提供情况,原始的公式应该改为:

=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)))

也许,逻辑更清晰了吧…………

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
A609771120
2021-07-18 · TA获得超过1620个赞
知道大有可为答主
回答量:2695
采纳率:70%
帮助的人:475万
展开全部
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))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑一笑说一说
科技发烧友

2021-07-18 · 职场办公软件基础应用
笑一笑说一说
采纳数:16868 获赞数:33699

向TA提问 私信TA
展开全部
将公式中的类似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))))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式