为什么我写的EXCEL函数显示错误
判断E2的时间,小于8:31,则在K2输出1,否则如果时间大于11:59小于14:01,则在L2输出1,否则如果时间小于17:29,则在M2输出1,否则输出“错误”
=IF(TIMEVALUE(TEXT(E2,"h:m")<TIMEVALUE("08:31")),K2="1",IF(AND(TIMEVALUE(TEXT(E2,"h:m"))>TIMEVALUE("11:59"),TIMEVALUE(TEXT(E2,"h:m"))<TIMEVALUE("14:01")),L2="1",IF(TIMEVALUE(TEXT(E2,"h:m")>TIMEVALUE("17:29")),M2="1","错误"))) 展开
你的问题在哪里?我们先弄清楚。
1. 对于EXCEL来说,它能使用函数对当前单元格进行赋值等操作,但是并不能实现“当满足某个条件时,对其他单元格赋值”。简单来说,你的公式写在那个单元格里面,就只能对这个单元格做赋值,不能对其他单元格赋值。
2. 你的条件比较乱,对于K2来说,如果E2<8:31的话,K2输入1,那如果11:59>E2>=8:31的话,K2又输入什么呢?类比L2,M2两个单元格,有些时间区间你并没有给出输入结果,我就默认你是想不显示。
那么要实现你的要求,excel公式应该怎么写呢?我给你一个方案你可以考虑下。
1. 在其他单元格先写入你要判断的几个时间,这几个单元格的格式按照如下图。为什么要这样做?在公式做判断的时候,直接引用来做比较,不用把时间再用timevalue函数做二次处理了再比较,就很方便。恩,真香!
2. 你要在K2,L2,M2三个单元格实现条件判断后显示,那么就分别在三个单元格输入公式:
K2=IF(E2<A9,1,"")
L2=IF(AND(E2>A10,E2<A11),1,"")
M2=IF(AND(E2<A12,E2>A11),1,IF(E2>=A12,"错误",""))
3. 然后就实现了你要的功能,看下效果(我把三个单元格填了颜色方便观察)。
3.1 比如你的条件一:判断E2的时间,小于8:31,则在K2输出1。
3.2 条件二:如不满足条件一的话,当E2大于11:59小于14:01时,L2输入1.
3.3 条件三:如不满足条件二,则当E2小于17:29,则在M2输出1,否则输出“错误”。
你这几个条件确实还没有设置清楚,你再理一理当不满足条件的另外一些时间,对应的单元格应该输入什么,我如上的例子是给你输入空值,就是没输出,你看下是否满足了你的要求。
你这个公式挺复杂,我只能简单看了一下,TIMEVALUE(TEXT(E2,"h:m")<TIMEVALUE("08:31")) 这里就错误了,估计你的TIMEVALUE函数用错了,这个函数我之前没用过,你自己多试试吧。
在K2写公式:=IF(TIMEVALUE(TEXT(E2,"h:m"))<TIMEVALUE("08:31"),"1","")
在L2写公式:=IF(AND(TIMEVALUE(TEXT(E2,"h:m"))>TIMEVALUE("11:59"),TIMEVALUE(TEXT(E2,"h:m"))<TIMEVALUE("14:01")),"1","")
在M2写公式:=IF(TIMEVALUE(TEXT(E2,"h:m"))>TIMEVALUE("14:01"),IF(TIMEVALUE(TEXT(E2,"h:m"))<TIMEVALUE("17:29"),"1","错误"),"")