Ich habe eine Excel-Datei, die den maximalen Sonnenstand im Jahresverlauf verfolgt, eine Zeile pro Tag, bei einem bestimmten Breiten-/Längengrad. Wenn ich den Breiten-/Längengrad bearbeite, ändert sich die tägliche maximale Höhe.
Ich möchte eine Formel schreiben, die die gesamte Datenbank (2 Spalten, 366 Zeilen) abfragt und mir den Tag angibt, an dem die Sonne erstmals eine bestimmte Höhe erreicht, und dann noch einmal, wenn sie diese Höhe nicht mehr erreicht.
Beispielsweise erreicht Honolulu am 1. Mai einen maximalen Sonnenhöhenwinkel von 80 Grad und bleibt bei 80 Grad oder mehr (einmal täglich), bis die Temperatur am 19. August wieder unter 80 Grad fällt.
Ich hätte gerne eine Excel-Funktion die diese beiden Daten generiert, da ich die Höhendaten bereits habe.
Danke!
Antwort1
INDEX()
Die Lösung besteht hier darin, eine Kombination aus und MATCH()
in einer Array-Formel zu verwenden .
Ich habe zwei Array-Formeln geschrieben, die das Problem lösen.
Startdatum:
{=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 0), 1)}
Endtermin:
{=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 1), 1)}
So funktionieren sie
Elevation
ist ein benannter Bereich, der alle Höhenangaben für das Jahr enthält,Find_Elevation
ist ein benannter Bereich, der der ist, nach dem wir suchen. In Ihrem Beispiel ist dies80
- Der Ausdruck
(Elevation>=Find_Elevation)
gibt ein Array vonTRUE
und zurückFALSE
(weshalb dies eine Array-Formel sein muss). Er gibtTRUE
immer dann etwas zurück, wenn die Höhe für jeden Tag größer oder gleich der gesuchten Höhe ist. - Die
MATCH()
Funktion mit dem dritten Argument0
gibt den Index des ersten Mals zurück, an dem sie auftrittTRUE
. Dies ist der Index des ersten Tages, an dem die Sonne über der von Ihnen gesuchten Höhe steht. - Wenn Sie das dritte Argument
1
in derMATCH()
Funktion verwenden, wird der letzte Zeitpunkt zurückgegeben, an dem angezeigt wurdeTRUE
. Dies ist der Index des letzten Tages, an dem die Sonne über der von Ihnen gesuchten Höhe steht. - Wir übergeben beide als zweites Argument an
INDEX()
, und es gibt das Datum zurück, das dem von zurückgegebenen Wert entspricht.MATCH()
Ich habe FormulaChop verwendet, um die obigen Formeln zu generieren (vollständige Offenlegung: Ich habe FormulaChop geschrieben). Hierist ein Screenshot davon, wie FormulaChop diese Formel anzeigt.Hierist ein Link zu einer Tabelle, die die Formel veranschaulicht. Bitte entschuldigen Sie, dass ich die Sonnenhöhen erfinden musste.