Den nächsthöheren Wert in einer Spalte finden

561
Monika Grigorova

Ich habe zwei Spalten Aund B. Spalte Bhat Werte, die ich in Spalte nachschlagen muss A. Ich muss jedoch nicht den exakten entsprechenden Wert finden, ich brauche den nächst höheren Wert.

Zum Beispiel:

Column A Column B   2 3 4 4 5 5 7 6 8 8 9 9 

Für den Wert 5in Spalte Bmöchte ich 7von Spalte zurückkehren A.

Ich denke, ich brauche wahrscheinlich eine Form von Lookup / Index-Match-Funktion, aber ich konnte die Formel nicht selbst schreiben.

1
Werden Ihre Daten immer sortiert? BruceWayne vor 5 Jahren 1
Ich denke, was Sie suchen, ist der Wert in Spalte A, der den nächsten Wert über dem Wert liegt, den Sie suchen. Wenn alle Werte Ganzzahlen sind und Sie nicht sortieren können, können Sie B + 1-A berechnen und nach dem kleinsten Wert> = 0 suchen. Xalorous vor 5 Jahren 0
@ Xalorous Es ist etwas komplizierter als das für eine unsortierte Spalte "A". Um den kleinsten Wert mithilfe einer Lookup-Funktion oder mithilfe von MATCH () zu ermitteln, muss die Spalte sortiert werden. Es kann * durchgeführt werden, aber Sie müssen eine Matrixformel, die Funktion 'SMALL ()' und einige Tricks verwenden. robinCTS vor 5 Jahren 0
Hallo zusammen, die Spalten können in der Tat sortiert werden, es ist keine Anforderung, dass sie in derselben Reihenfolge bleiben. Monika Grigorova vor 5 Jahren 0

2 Antworten auf die Frage

2
robinCTS

Sortiert

Die einfachste Formel gilt für den Fall, dass die Spalte Aaufsteigend sortiert ist:

Arbeitsblatt-Screenshot

Geben Sie die folgende Formel in C1und Strg-Eingabe / Kopieren-Einfügen / Ausfüllen / Auto-Ausfüllen in den Rest der Tabellenspalte ein:

=INDEX(A:A,1+MATCH(B1,A:A,1)) 

Erläuterung:

Das 1als drittes Argument von MATCH()bedeutet, dass es den größten Wert findet, der kleiner oder gleich dem ersten Argument ist. Addiert 1man diesen Index, so erhält man den Index der nächst höheren Nummer. Die INDEX()Funktion extrahiert dann die Nummer.

Beachten Sie, dass ich am Ende der Spalte einen zusätzlichen Wert hinzugefügt habe A. Dies gilt für den Sonderfall, in dem es keinen nächst höheren Wert gibt.


Unsortiert

Für den Fall, dass die Spalte Aunsortiert ist (funktioniert auch, wenn sie sortiert ist), ist die Formel etwas komplizierter:

Geben Sie ( Ctrl+ Shift+ Enter) die folgende Formel in das Feld ein C1und fügen Sie sie in die restliche Tabellenspalte ein. ( {Und vergessen Sie nicht, das und zu entfernen }):

{=SMALL(IF($A$1:$A$6>B1,$A$1:$A$6),1)} 

Erläuterung:

Die Funktion gibt den n-ten kleinsten Wert des Arrays zurück und ignoriert boolesche Werte . Da das dritte Argument der Funktion standardmäßig voreingestellt ist, werden nur Werte geprüft, die größer als der Wert in der Spalte sind. Dies führt zu dem nächst höheren Wert.SMALL(array,n)IF()FALSEB

Beachten Sie, dass kein spezieller Beendigungswert für die Spalte Aerforderlich ist, da ein #NUM!Fehler das Ergebnis ist, wenn in der Spalte keine Werte vorhanden sind, die Agrößer als der Wert in der Spalte sind B.


Schließlich gibt es, wie Aventurin hervorgehoben hat, eine alternative, ähnliche Formel, die unabhängig von der Sortierung funktioniert (jedoch mit einem wichtigen Vorbehalt).

Für Excel 2016+:

=MINIFS($A$1:$A$6,$A$1:$A$6,">"&B1) 

Dies funktioniert, weil die MINIFS()Funktion die Werte herausfiltert, die den Kriterien nicht entsprechen, bevor der Mindestwert ermittelt wird.

Für frühere Versionen von Excel:

{=MIN(IF($A$1:$A$6>B1,$A$1:$A$6))} 

Dies funktioniert aus demselben Grund wie die SMALL()Funktion - es werden boolesche Werte ignoriert, die von der IF()Funktion generiert werden .

Vorbehalt:

Sowohl die =MINIFS()und {=MIN(IF())}Formeln werden nicht korrekt funktionieren, wenn eine Null der richtige sein kann nächst höhere Wert als Null auch zurückgegeben, wenn es ist kein nächst höherer Wert. (Dies ist der gleiche Grund für das Hinzufügen eines zusätzlichen Werts am Ende der Spalte Afür die erste Formel - diese Formel gibt auch eine Null zurück, wenn keine höheren Werte vorhanden sind.)

Gibt MATCH () die Zelladresse oder den Wert zurück? Xalorous vor 5 Jahren 0
@Xalorous - `MATCH ()` gibt eine Zeilennummer zurück. `Index` gibt einen Wert aus dieser Zeilennummer zurück. BruceWayne vor 5 Jahren 1
@Xalorous `MATCH ()` gibt den 1-basierten Index in den Bereich des zweiten Arguments zurück. Dies stellt sich als Zeilennummer heraus, wenn der Bereich eine ganze Spalte ist. robinCTS vor 5 Jahren 1
0
aventurin

Sie können zB die Array-Funktion {=MIN(IF(A1:A6 > B1; A1:A6))}oder {=MIN(IF(A1:A6 > B1; A1:A6; 1000))}(mit 1000 als Fallback-Wert) verwenden.

Es nimmt das Minimum aller Werte aus Spalte A, die größer sind als der Wert aus der aktuellen Zelle aus Spalte B (hier B1). Daher muss keine der Spalten sortiert werden.

Bei Excel> = 2016 können Sie auch die MINIFSFunktion verwenden.

Beachten Sie, dass Array-Funktionen durch Drücken von eingefügt werden müssen Ctrl+Shift+Enter.