【发布时间】:2013-05-17 07:57:41
【问题描述】:
我有一个关于 Excel 公式的新问题。问题是,我有一张表 sheet2,其中包含日期和值。目前我正在使用 index() 和 match() 函数的组合来根据某些条件获取不同的值 - 一个是日期,来自 sheet2 到另一个工作表,sheet1,.
sheet2 中的数据,会不时更新,因此数据中的某些日期显然会“消失”,当然,在 strong>index-match 公式,无法找到手头的值。
我的问题是,如果有一种简单的方法可以编写公式,以便我们尝试从 sheet1 中找到的日期比当前日期less,将当前值转换为常数值。伪代码类似于,
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的值已经过去),所以我现在想FIX这个值,这样公式不再尝试在 sheet2 中找到“2013-05-17”。 IE。我希望单元格 F872 只说“400.000”,而不是“IFERROR(INDEX(...)”
谢谢, 尼克拉斯
【问题讨论】:
标签: excel excel-formula