Excel の数式に関する新しい質問があります。つまり、日付と値を含むシートsheet2があります。現在、 index( ) 関数とmatch()関数の組み合わせを使用して、特定の条件に従って異なる値をフェッチしています。
sheet2のデータは時々更新されるため、データ内の特定の日付が明らかに「消えて」しまい、もちろんインデックス マッチ式でエラーが発生し、手元にある値を見つけることができません。
私の質問は、シート1から見つけようとする日付が現在の日付よりも小さい場合に、現在の値を定数値に変換する簡単な方法があるかどうかです。擬似コードは次のようになります。
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に「IFERROR(INDEX(...)」ではなく「400.000」とだけ表示させたい
ありがとう、ニクラス