Excel VLOOKUP は私のアプリケーションに最適な選択肢でしょうか?

Excel VLOOKUP は私のアプリケーションに最適な選択肢でしょうか?

特定の緯度/経度を指定して、年間を通じて太陽の最大高度を 1 日 1 行で追跡する Excel ファイルがあります。緯度/経度を編集すると、毎日の最大高度が変わります。

データベース全体 (2 列、366 行) を照会し、太陽が最初に特定の高度に到達し始めた日と、その高度に到達しなくなった日を返す数式を記述したいと思います。

たとえば、ホノルルでは 5 月 1 日に太陽高度が最大 80 度に達し、8 月 19 日に再び 80 度を下回るまで 80 度以上の状態が続きます (1 日 1 回)。

標高データがすでにあるので、これら 2 つの日付を生成する Excel 関数が必要です。

ありがとう!

答え1

ここでの解決策は、配列数式でINDEX()との組み合わせを使用することです。MATCH()

問題を解決する配列数式を 2 つ書きました。

開始日: {=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 0), 1)}

終了日: {=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 1), 1)}

仕組みは次のとおりです

  • Elevationは、その年のすべての標高を含む名前付き範囲です。これは、Find_Elevation私たちが探している名前付き範囲です。あなたの例では、これは80
  • この式はand(Elevation>=Find_Elevation)の配列を返します(これが配列数式である必要がある理由です)。各日の標高が、探している標高以上である場合に返されます。TRUEFALSETRUE
  • MATCH()3 番目の引数を持つ関数は、最初0に見たときのインデックスを返しますTRUE。これは、太陽が探している高度より上にある最初の日のインデックスです。
  • 1関数の3 番目の引数を使用すると、MATCH()最後に見た時刻が返されますTRUE。これは、探している高度より太陽が上にあった最後の日のインデックスです。
  • これら両方を の2番目の引数として渡すINDEX()と、 が返す値に対応する日付が返されます。MATCH()

上記の数式を生成するために FormulaChop を使用しました (完全開示: FormulaChop は私が作成しました)。 こここれは、FormulaChop がこの数式を表示する方法のスクリーンショットです。ここ式を示すスプレッドシートへのリンクです。太陽高度は私が計算しなければならなかったことをお許しください。

関連情報