0

我有一个关于 Excel 中的公式的新问题。事情是,我有一张表sheet2,其中包含日期和值。目前,我正在使用index()match()函数的组合,根据某些条件获取不同的值 - 一个是日期,从sheet2到另一张表sheet1,。

sheet2中的数据将不时更新,因此数据中的某些日期显然会“消失”,当然,在索引匹配公式中会产生错误,无法找到手头的值。

那么我的问题是,如果有一种简单的方法可以编写公式,以便如果我们尝试从sheet1中找到的日期小于当前日期,则将当前值转换为常数值。伪代码类似于,

IF date_to_find from sheet1 IN sheet2 > todays_date Then
    Set value to constant (do not evaluate formula)
Else
    Find value in sheet2 where the dates are matched in both sheet1 and sheet2
End

我知道最简单的方法可能是在 VBA 中实现整个事情,但只是想检查是否有人有更好的解决方案。

sheet1中的当前公式是

'A872 = "2013-05-17"
'F872 is the goal cell (containing formula)
'$A$1:$K$100 contains date in format "yyyy-mm-dd" (given as column)
'$A$2:$K$2 contains currencies (given as row)
'$A$3:$K$3 contains text (also given as row)

 IFERROR(INDEX('sheet2'!$A$1:$K$100;MATCH(A872;'sheet2'!$A$1:$A$100;0);_
        MATCH(1;('sheet2'!$A$2:$K$2="EUR")*('sheet2'!$A$3:$K$3="Matching text");0));"")

因此,如果当前日期为“2013-05-17”,则公式计算完美并返回 400.000。但是明天,“2013-05-18”,不需要更改单元格(2013-05-17值已经过去),所以我现在想修复这个值,这样公式就不会尝试找到sheet2中的“2013-05-17”不再存在。即我希望单元格F872只说“400.000”,而不是“IFERROR(INDEX(...)”

谢谢, 尼克拉斯

4

1 回答 1

1

您可以将公式包装在这样的 IF 语句中:

=IF(A872<TODAY(),[your formula],[constant value])
于 2013-05-17T10:25:20.697 回答