我有一個 Excel 文件,可以在給定特定緯度/經度的情況下追蹤全年太陽的最大高度,每天一行。如果我編輯緯度/經度,每日最大海拔會改變。
我想編寫一個公式來查詢整個資料庫(2 列,366 行),並給出太陽第一次開始達到給定高度的日期,以及太陽不再達到該高度的日期。
例如,檀香山將在 5 月 1 日經歷最大太陽高度角 80 度,並保持在 80 度或更高(每天一次),直到 8 月 19 日再次降至 80 度以下。
我想要一個 Excel 函數來產生這兩個日期,因為我已經有了海拔資料。
謝謝!
答案1
這裡的解決方案是在數組公式中使用INDEX()
和的組合。MATCH()
我寫了兩個數組公式來解決這個問題。
開始日期:
{=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 0), 1)}
結束日期:
{=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 1), 1)}
他們是這樣運作的
Elevation
是一個命名範圍,包含一年中的每個海拔高度,Find_Elevation
是一個我們正在尋找的命名範圍。在你的例子中,這是80
- 這個表達式
(Elevation>=Find_Elevation)
傳回由TRUE
and組成的陣列FALSE
(這就是為什麼這需要是一個陣列公式)。TRUE
只要每天的海拔大於或等於您要尋找的海拔,它就會返回。 MATCH()
帶有第三個參數的函數傳回0
它第一次看到的索引TRUE
。這是太陽高於您要尋找的海拔高度的第一天的指數。1
在函數中使用第三個參數MATCH()
可以使其傳回上次看到的值TRUE
。這是最後一天太陽高於您要尋找的海拔高度的指數。- 我們將這兩個參數作為第二個參數傳遞給
INDEX()
,它會傳回與傳回的值相對應的日期MATCH()
我使用 FormulaChop 產生上面的公式(完全披露:我寫了 FormulaChop)。 這裡是 FormulaChop 如何顯示此公式的螢幕截圖。這裡是演示該公式的電子表格的連結。請原諒我必須彌補太陽高度角。