
Eine Problembeschreibung und ein Beispiel finden Sie im Bild.
Ich möchte den Buchstaben zurückgeben, der der ersten Zahl entspricht, die größer ist als mein Nachschlagewert/meine Nachschlagezahl.
Ich habe versucht, dies mithilfe von Index-Match zu lösen, aber es scheint nur zu funktionieren, wenn eine genaue Übereinstimmung zwischen dem Nachschlagewert und den Zahlen besteht, mit denen er verglichen wird.
Dies ist die Formel, von der ich dachte, dass sie funktionieren würde, aber sie funktioniert nicht: =+INDEX(A3:F3,MATCH(A6,A2:F2,-1))
Antwort1
Wie in dem Link erläutert, den ich in den Kommentaren angebe, MATCH(,,-1)
müssen die Daten in absteigender Reihenfolge sortiert werden, sonst wird ein Fehler zurückgegeben.
Um das zu erhalten, was Sie wörtlich angegeben haben („die erste Zahl, die größer ist als mein Nachschlagewert/meine Nachschlagezahl“), können Sie Folgendes verwenden:
=INDEX(A3:F3,MATCH(A6,A2:F2,1)+1)
Um eine Übereinstimmung zu erhalten, bei der die erste Zahl gleichodergrößer als Ihr Nachschlagewert, können Sie Folgendes verwenden:
=INDEX(A3:F3,IFERROR(MATCH(A6,A2:F2,0)-1,MATCH(A6,A2:F2,1))+1)
Antwort2
Hier hätte man eine Menge Dinge tun können. Für etwas etwas „Ausgefalleneres“, aber eine kürzere Formel könnte man also Folgendes verwenden:
=INDEX(FILTER(A2:F3,A2:F2>=A6),2,1)
FILTER()
so eingerichtet, dass der gewünschte Buchstabe in der ersten Spalte des resultierenden Arrays zurückgegeben wird (das Array wird nur intern verwendet). Man wüsste also genau, dass der gewünschte Buchstabe in „Zeile 2, Spalte 1“ steht, was das INDEX()
Ausfüllen der Funktion erleichtert.
„Größer als“ oder „gleich oder größer als“ wird dann auf die gewohnte Art und Weise behandelt, nämlich mit ">" oder ">=" in der Bedingung in FILTER()
.
Es behandelt den Fall, dass die Nachschlagezeile unsortiert ist (also nicht in der richtigen Reihenfolge), da FILTER()
das resultierende Array ohne Aufforderung sortiert wird. Unabhängig vom Zustand der Nachschlagezeile wird also die richtige Antwort zurückgegeben.
Wenn dies nicht FILTER()
verfügbar ist, kann man das Folgende als Array verwenden, um seinen Wert MATCH()
zu finden und einzuspeisen :INDEX()
=MIN(IFERROR((A2:F2)/(A2:F2>=A6),MAX(A2:F2)))
Fast komplett altmodisch und man kann ein ersetzen, IF(ISERROR(...
wenn man keins IFERROR()
zur Verfügung hat. Die Werte werden durch die 1 oder 0 aus dem ">="-Test geteilt, sodass die Werte in der Nachschlagezeile erzeugt werden ODER ein Fehler auftritt, aber in diesen Fällen MAX()
wird der höchste Wert in der Nachschlagezeile eingetragen, sodass er das Finden des gewünschten Werts nicht beeinträchtigt. Wenn es die Umstände erfordern, kann man ein "+1" in das MAX()
Ergebnis einfügen, sodass alle Werte, die kleiner als sind, die "natürlichen" Einträge überschreiten.
Heutzutage würde es natürlich auch XLOOKUP()
sehr gut funktionieren:
=XLOOKUP(A6,A2:F2,A3:F3,,1)
Kurz, einfach, klar. Keine Tricks nötig.
( F Bert
war glücklich. Poste dies nur für alle, die recherchieren und eine Antwort brauchen, die nicht an die einzigen Faktoren des Problems gebunden ist.)