发布网友 发布时间:2024-10-23 21:01
共3个回答
热心网友 时间:2024-11-01 19:58
不需要复制粘贴为数值的,函数可以直接作为结果参与下一个函数的运算,只是我们要注意数据类型——典型就是文本、数值的问题,需要适当的类型转换,否则公式结果和我们想象的不同。
例1:请看下图:
LEFT(A1,4)的结果明明是2018,应该小于2021的,为什么值为FALSE呢,粘贴为数值后是正确判断2018<2021的,问题就在于LEFT的结果实际上是文本的2018,要转换后进行判断,见例2
例2:请看下图:
本例子中--LEFT(A1,4)能把文本的2018转换为数值2018,因此系统判断就准确了,当然也可以都转换为文本进行判断,文本支持带字母的比较,但是注意文本是从左边开始对比,长度不同的时候比较迷惑
例3:转换为文本也能正确进行对比
最后再来解答你的题目,先粘贴一下三个公式:
公式1(AH=》AI):
=IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4))
公式2(AJ=》AK):=IF(OR(AI6<2006,AI6=2015),"1",IF(OR(AI6=2006,AI6=2008,AI6=2012,AI6=2014,AI6=2016,AI6=2018),"2",IF(AI6=2010,"3","4")))
公式3(AL,最终):
=IF(AND(AK6=1,H6-R6=1,I6-S6=1),"正确",IF(AND(AK6=2,I6+1=S6),"正确",IF(AND(AK6=3,H6-1=R6),"正确",IF(AND(AK6=4,H6=R6,I6=S6),"正确","错误"))))
第一步,公式1作为AI带入公式2:
=IF(OR(--IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) <2006,--IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) =2015),"1",IF(OR(-IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) =2006,--IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) =2008,--IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) =2012,--IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) =2014,--IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) =2016,--IF(ISNA(MID(C6,1,4)),"",MID(C6,1,4)) =2018),"2",IF(AI6=2010,"3","4")))
这下子我受不了了,太复杂了,看来公式2需要变形
再次粘贴公式2进行:
=IF(OR(AI6<2006,AI6=2015),"1",IF(OR(AI6=2006,AI6=2008,AI6=2012,AI6=2014,AI6=2016,AI6=2018),"2",IF(AI6=2010,"3","4")))
理解含义是根据公式1得出的年度判断结果为1、2、3、4,初步觉得可以使用VLOOKUP,来写,试试看:
=VLOOKUP(IF(ISNA(MID(C6,1,4)),0,MID(C6,1,4)+0)
,{0,4;1,1;2006,2;2007,4;2008,2;2009,4;2010,3;2011,4;2012,2;2013,4;2014,2;2015,1;2016,2;2017,4;2018,2;2019,4}
,2);
写完了,这个VLOOKUP三个参数,第一个参数是公式1稍微变形计算的数值结果,为0、或者正常年度,第二个参数是对照表,用分号分开的对照关系,年度要从小到大写,0为4、1-2006得2、2007-2018列出来表,2019及以上都是4
下载把公式写到一行上得到简化后的公式2:
=VLOOKUP(IF(ISNA(MID(C6,1,4)),0,MID(C6,1,4)+0),{0,4;1,1;2006,2;2007,4;2008,2;2009,4;2010,3;2011,4;2012,2;2013,4;2014,2;2015,1;2016,2;2017,4;2018,2;2019,4},2);
先看看公式3:
=IF(AND(AK6=1,H6-R6=1,I6-S6=1),"正确",IF(AND(AK6=2,I6+1=S6),"正确",IF(AND(AK6=3,H6-1=R6),"正确",IF(AND(AK6=4,H6=R6,I6=S6),"正确","错误"))))
这个使用AK6的次数太多,虽然把上面的公式2替换AK6能得到正确的结果,但是这样公式太长,我们先看看能否想办法先简化公式3,理解公式3的含义是区分AK6为1、2、3、4的情况下进行不同的判断,我想用MID来写,模式为:
=MID("A正确错误正确错误",AK6*2,2)
第一个参数是一个填充字符开始的四种情况判断的链接,当AK6等一1、2、3、4的时候从2、4、6、8取两个字符,那么公式为:
=MID("A"
&IF(AND(H6-R6=1,I6-S6=1),"正确","错误")
&IF(I6+1=S6,"正确","错误")
&IF(I6-1=R6,"正确","错误")
&IF(AND(H6=R6,I6=S6),"正确","错误")
,VLOOKUP(IF(ISNA(MID(C6,1,4)),0,MID(C6,1,4)+0),{0,4;1,1;2006,2;2007,4;2008,2;2009,4;2010,3;2011,4;2012,2;2013,4;2014,2;2015,1;2016,2;2017,4;2018,2;2019,4},2)*2
,2)
交卷,请老师审核。
热心网友 时间:2024-11-01 19:52
AJ6公式:
=IF(OR(AH6<2006,AH6=2015),"1",IF(OR(AH6=2006,AH6=2008,AH6=2012,AH6=2014,AH6=2016,AH6=2018),"2",IF(AH6=2010,"3","4")))、
把所有AI替换成AH
AL6公式:
=IF(AND(AJ6=1,H6-R6=1,I6-S6=1),"正确",IF(AND(AJ6=2,I6+1=S6),"正确",IF(AND(AJ6=3,H6-1=R6),"正确",IF(AND(AJ6=4,H6=R6,I6=S6),"正确","错误"))))
把所有AK替换成AJ
这样就不用复制黏贴了
你的问题很简单 还是猜你的意思更花时间=。=
热心网友 时间:2024-11-01 19:57
不太清楚你想要干什么??估计是你的数据出来的是文本了,所以要把公式中的数字双引号去掉,而且要把MID函数取出来的数据进行转换(可以用乘以1的方法)。
大致可以给你简化为可用公式:
=IF(ISNA(MID(C6,1,4)),"",1*MID(C6,1,4))
=IF(OR(AH6<2006,AH6=2015),1,IF(AND(AH6/2>1002,AH6/2<1010),2,IF(AH6=2010,3,4)))
=IF(OR(AND(AJ6=1,H6-R6=1,I6-S6=1),AND(AJ6=2,I6+1=S6),AND(AJ6=3,H6-1=R6),AND(AJ6=4,H6=R6,I6=S6)),"正确","错误")
若是AJ列需要直接的公式,可以不用AH6单元格的数据,公式为:
=IF(ISNA(MID(C6,1,4)),"",IF(OR(1*MID(C6,1,4)<2006,1*MID(C6,1,4)=2015),1,IF(AND(MID(C6,1,4)/2>1002,MID(C6,1,4)/2<1010),2,IF(1*MID(C6,1,4)=2010,3,4))))