第3个回答 推荐于2016-11-12
=IF(AND(DAY($A3)<=D$1,DAY($B3)>=D$1),REPT("-",3),"")
上述公式中不成功的原因,首先可能是单元格引用的行数不对,从上图看,至少应在第4行,总之选要明确最开始两格是a4,b4,还是其它地址。
如果还不对,则可能单元格中的数据不是日期格式,而是文本格式,文本格式还要看前面是否带了单引号,因而不能简单应用day()逊数
如是没带单引号,是完全符合日期格式的“文本”,可先用文本转日期函数,如:
DATEVALUE(a4),嵌套起来就是 day(DATEVALUE(a4)
如是不太标准的文本格式,则需直接用取子串函数,需判断最后“日”的字符起始位置和数字个数。这个函数大慨是这样的:
MID(A4,FIND("-",A4,FIND("-",A4)+1)+1,LEN(A4)-FIND("-",A4,FIND("-",A4)+1))
可靠一点,上面得到的是文本,还要转换成数值
VALUE(MID($A4,FIND("-",$A4,FIND("-",$A4)+1)+1,LEN($A4)-FIND("-",$A4,FIND("-",$A4)+1)))
就用这个代替day($a3),相应的将后面的DAY($B3)换成
VALUE(MID($B4,FIND("-",$B4,FIND("-",$B4)+1)+1,LEN($B4)-FIND("-",$B4,FIND("-",$B4)+1)))
最终完整的公式是
=IF(AND(VALUE(MID($A4,FIND("-",$A4,FIND("-",$A4)+1)+1,LEN($A4)-FIND("-",$A4,FIND("-",$A4)+1)))<=D$1,VALUE(MID($B4,FIND("-",$B4,FIND("-",$B4)+1)+1,LEN($B4)-FIND("-",$B4,FIND("-",$B4)+1)))>=D$1),REPT("-",3),"")
最后的方案基本可以通用的,还不对再仔细核对引用的单元格地址对不对(你截图的时候应将行列标签包含在内)本回答被提问者采纳