关于配方问题

时间:2013-05-17 07:57:42

标签: excel excel-formula

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

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

我的问题是,如果有一种简单的方法来编写公式,那么如果我们尝试从 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(...)”

谢谢, 尼古拉斯

1 个答案:

答案 0 :(得分:1)

您可以将公式包装在IF语句中,如下所示:

=IF(A872<TODAY(),[your formula],[constant value])