EXCEL公式中,当某一单元格为空,则自动选取特定单元格,这样的公式该怎么写

如图,L列为合同回款节点,预付款,到货款,尾款都是手动填入日期,N列要求算出当前付款日到上一付款日(预付款则是到合同签订日)的天数差。我现在的公式是N4=DATEDIF(L3,L4,"d"),然后直接公式拉下去,但是如果合同没有预付款,或者到货款,也就是L4,或者L5为空,直接填写L6的话,怎么写才能让公式直接读取上一个单元格,如果还为空则继续读取上一单元格直到L3为止?

第1个回答  2014-03-11
很简单,拿你图中数据为例:
譬如你在N3单元格输入公式判断L3单元格情况:=IF(L3="",N2,L3)
(它的功能是如果L3单元格是空,则返回N3单元格上面的N2,负责返回L3)
你可以利用你自己写的公式填入进去,达到你想要的效果,譬如N4=DATEDIF(L3,L4,"d")
那么你可以在N4单元格输入:=IF(L4="",N3,DATEDIF(L3,L4,"d"))追问

是这样,
N3=N4+N5+N6,N4=DATEDIF(L3,L4,"d"),N5=DATEDIF(L4,L5,"d"),N6=DATEDIF(L5,L6,"d")
然后当L5为空的时候,N6最后要得出datedif(L4,L6,"d")的结果,如果L4也为空的话,N6最后得出datedif(L3,L6,"d")的结果。。。。
这个公式该怎么写?

追答

你表达的意思就是尾款必须日期必须有,并且优先顺序是和 到款日-预付日-合同日之间的天数差,那么有一个比较笨的办法但可以直接解决,如下
公式写在N6单元格确保L6单元格一定会和上述某一项日期产生一个天数差:
if(L5="",if(L4="",DATEDIF(L3,L6,"d"),DATEDIF(L4,L6,"d")),DATEDIF(L5,L6,"d"))
你需要了解一下IF函数的用途,然后自己可以在需要的时候增加或减少项目,这个函数逻辑非常简单,判断一个条件,对了返回True区的值,错了返回False区的值,只要你逻辑不会乱你可以无限套下去。

本回答被提问者采纳
第2个回答  2014-03-11
N4中输入:=IF(L4="","",DATEDIF(MAX($L$3:L3),L4,"d")),下拉即可
第3个回答  2014-03-11
在N6中输入或复制粘贴下列公式
=DATEDIF(LOOKUP(9E+307,L3:L5),L6,"D")
相似回答