EXCEL公式写入数据有效性时提示公式出错

=AND(LEN(o1)=8,value(LEFT(o1,4))>1945,value(LEFT(o1,4))<2020,value(MID(o1,5,2))>0,value(MID(o1,5,2))<13,value(RIGHT(o1,2))>0,value(RIGHT(o1,2))<32)
求解,哪里错了

第1个回答  推荐于2017-10-30
测试了下,没有问题,应该是你的输入有问题,请复制下段然后粘贴到公式编辑输入框:
=AND(LEN(O1)=8,VALUE(LEFT(O1,4))>1945,VALUE(LEFT(O1,4))<2020,VALUE(MID(O1,5,2))>0,VALUE(MID(O1,5,2))<13,VALUE(RIGHT(O1,2))>0,VALUE(RIGHT(O1,2))<32)
测试用的数字:19471231,证实可以通过。
祝你成功!追问

我不是在单元格里用,是在数据有效性里用的,还是出现这个提示

追答

我理解你的意思,但是如果能够正确地进行数据有效性约束,该公式在单元格使用时必然也会返回对应的逻辑值,而且我是在数据有效性和单元格的双重验证后才做出上述回答的,我初步估计你在操作细节上可能出现纰漏,你可以复制我上述公式,而不是自己手动输入。如果仍有疑义,Q644854547,注明:excel。谢谢合作!
祝你成功!

追问

之前我就注意到了,虽然EXCEL提示出错,但是数据有效性还是可以用的,我就是想知道为什么我的公式会出错
PS:我是复制的,还是出现了错误提示,而且之前我也是在文本文档中编辑完才复制过去的。

本回答被提问者采纳
第2个回答  2012-04-22
该提示说明使用了该有效性的单元格不符合有效性条件.

btw:
这个有效性公式并不能限制非法的日期值,例如 20120231.
建议使用下面的公式
=-text(o1,"0-00-00")
在设置有效性时注意取消勾选:忽略空值

如果一定要限制时间范围,公式改为
=and(-text(o1,"0-00-00"),left(o1,4)>"1945",left(o1,4)<"2020")追问

我也知道不能限制非法的日期,因为数据有效性的公式不够长。而且不能用你的公式,因为提交给我的数据往往是什么格式的都有,而且最终必须是文本型的才可以,有什么好办法么

第3个回答  2012-04-21
你的公式其中有 mid,right等取数函数,涉及字段长度,
若是O1这个单元格若是数据长度不符合的时候,就会报错,
建议在mid,right等取数函数都用iserror先判断在录入追问

O1单元格的内容是文本格式的日期,长度必然为8
而且不是在填写数据的时候报错,而是在编辑数据有效性的时候出现的错误提示
至于公式的长度,我曾经手输过一次,没有超出限制

追答

可以先这样,把以上公式填入A1单元格,看看结果是 true还是false还是错误
若是错误,就逐一选择and其中的函数,逐一按F9看看结果,可以排查出问题所在,修正后在加入数据有效性去执行

追问

是true,这个方法我试过了,因为是true我才不知道为什么

第4个回答  2017-10-30
试过了,公式无误。
第5个回答  2012-04-22
说你要判断的条件
你的格式不对追问

哪里不对?我就是想知道这个