Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Finde nächstkleineren Wert

Forumthread: Finde nächstkleineren Wert

Finde nächstkleineren Wert
24.11.2014 17:12:28
Catherin
Hallo,
ich suche eine Lösung im VBA für folgendes Problem:
Ich möchte aus einer Spalte den Zellindex finden, in der die Zahl steht, die am dichtestes bei der gesuchten Zahl liegt (also der nächstkleinere oder der nächstgrößere Wert).
Als Beispiel:
In der Spalte stehen in den Zeilen 1 bis 4 die Werte 1.2 3.4 5.6 7.8 9.0
Wenn ich nun nach 6.1 suche, möchte ich als Ergebnis 3 (da 5.6 - der nächstkleinere Wert in Zeile 3 steht)
Ich habe mich schon an der Find-Funktion versucht, jedoch leider ohne Erfolg.
In Excel gibt es z.B. beim SVerweis die Möglichkeit über den Bereich_Verweis einzustellen, dass der identische oder eben auch der am dichtesten dran liegende Wert gesucht wird. Gibt es das auch für die Find-Funktion?
Vielen Dank für die Unterstützung.

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Finde nächstkleineren Wert
24.11.2014 17:36:19
Daniel
Hi
nein, die .FIND-Funktion sucht immer nach der genauen übereinstimmung, ähnlich wie der SVerweis mit 4. Parameter = FALSCH.
Bei Texten ist zwar die Verwendung von Jokerzeichen möglich oder die Suche nach Teilinhalten, aber eine Suchmöglichkeit "am dichtesten dran" gibt es nicht.
Eine Lösungsmöglichkeit wäre:
1. Schreibe in eine Hilfsspalte eine Formel, die die Absolute Differenz zum Suchwert ermittelt (dh ohne Vorzeichen): =ABS(A1-5,6)
2. Ermittle in dieser Hilfsspalte den Kleinsten Wert über die MIN-Funktion, diesen kannst du dann mit .FIND suchen lassen, oder mit der VERGLEICHS-Funktion.
sieht als VBA in etwa so aus:
dim Suchwert as Double
dim Ergebniszeile as long
Suchwert = 5.6
With Range("B1:B4")
.FormulaR1C1 = "=ABS(RC1-" & Suchwert & ")"
Ergebniszeile = Worksheetfunction.Match(Worksheetfunction.Min(.Cells), .Cells, 0)
End With
Gruß Daniel

Anzeige
mit VERGLEICH() kann es ganz einfach sein ...
25.11.2014 09:45:55
neopa
Hallo Catherin,
... doch da wäre zunächst zu klären, um was für Werte es sich bei Dir in Spalte A handelt.
Sollen es evtl. Zahlenwerte sein und Du arbeitest mit dem Punkt als Dezimaltrennzeichen? Oder sind es wirklich Textwerte mit Punkt, die lediglich Ziffern neben dem Punkt enthalten und Du arbeitest ansonsten mit dem Komma als Dezimaltrennzeichen?
Im ersteren Fall ganz einfach: =WENNFEHLER(VERGLEICH(C1;A:A);"keine Zahlenwerte") wobei Du die WENNFEHLER()-Klammerung Dir auch sparen kannst.
Im zweiteren Fall: {=WENNFEHLER(VERGLEICH(--WECHSELN(C1;".";",");--WECHSELN(A1:A99;".";","));"es gibt außer Ziffern und Punkten auch andere Zeichen")} wobei es sich hier um eine Matrixformel handelt;
Umrandende { } sind nicht miteingeben, sondern die Formel mit STRG+SHIFT+RETURN abschließen!
Gruß Werner
.. , - ...

Anzeige
AW: Finde nächstkleineren Wert
25.11.2014 12:10:28
Catherin
Danke Daniel, Danke Werner!
Ich habe eine Kombination aus euren Vorschlägen gebastelt.
Sie sieht nun folgendermaßen aus:
Zeile_MM_Min = WorksheetFunction.Match(MM_Min, MM_all, -1)
mit
Zeile_MM_Min: Position im Array = gesuchte Zeile
MM_Min: Der Wert den ich suche (war im Beispiel 5.6)
MM_all: Array mit all den Werten, die ich durchsuchen möchte (war im Beispiel 1.2 3.4 5.6 7.8 9.0)
Bisher funktioniert es wie gewünscht.
Anzeige
;
Anzeige

Infobox / Tutorial

Nächstkleineren Wert in Excel finden


Schritt-für-Schritt-Anleitung

Um den nächstkleineren Wert in Excel zu finden, kannst Du folgende Schritte befolgen:

  1. Hilfsspalte erstellen: Erstelle eine Hilfsspalte, in der Du die absolute Differenz zwischen dem Suchwert und den Werten in Deiner ursprünglichen Spalte berechnest. Wenn der Suchwert 5.6 ist, sieht die Formel in Zelle B1 so aus:

    =ABS(A1-5.6)

    Ziehe die Formel bis zur letzten Zeile Deiner Daten.

  2. Kleinsten Wert ermitteln: Verwende die MIN-Funktion, um den kleinsten Wert in der Hilfsspalte zu finden:

    =MIN(B1:B4)
  3. Position finden: Nutze die VERGLEICH-Funktion, um die Position des nächstkleineren Wertes in der ursprünglichen Spalte zu finden:

    =VERGLEICH(MIN(B1:B4), B1:B4, 0)
  4. Ergebnis ausgeben: Das Ergebnis zeigt Dir die Zeilennummer des nächstkleineren Wertes.


Häufige Fehler und Lösungen

  • Fehler: Falsche Ergebnisse
    Lösung: Achte darauf, dass Du die Formeln korrekt ziehst und die Zellenreferenzen richtig sind.

  • Fehler: #NV-Fehler bei VERGLEICH
    Lösung: Stelle sicher, dass der gesuchte Wert tatsächlich in der Hilfsspalte vorhanden ist.


Alternative Methoden

Wenn Du keine Hilfsspalte verwenden möchtest, kannst Du auch VBA verwenden. Hier ein einfaches Beispiel:

Dim Suchwert As Double
Dim Ergebniszeile As Long
Suchwert = 5.6
With Range("A1:A4")
    Ergebniszeile = Application.WorksheetFunction.Match(Application.WorksheetFunction.Min(.Cells), .Cells, 1)
End With

Diese Methode ermöglicht es Dir, den nächstkleineren Wert direkt zu finden, ohne eine Hilfsspalte zu benötigen.


Praktische Beispiele

Angenommen, Du hast die Werte 1.2, 3.4, 5.6, 7.8 und 9.0 in den Zellen A1 bis A4 und suchst nach dem Wert 6.1.

  • Hilfsspalte B zeigt:

    • B1: 5.4
    • B2: 2.7
    • B3: 0.5
    • B4: 2.9
  • Die Formel =MIN(B1:B4) ergibt 0.5, und =VERGLEICH(0.5, B1:B4, 0) gibt Dir die Zeile 3 zurück, was den Wert 5.6 in Spalte A entspricht.


Tipps für Profis

  • Matrixformeln: Wenn Du mit komplexeren Daten arbeitest, können Matrixformeln wie {=WENNFEHLER(VERGLEICH(--WECHSELN(C1;".";",");--WECHSELN(A1:A99;".";","));"es gibt außer Ziffern und Punkten auch andere Zeichen")} nützlich sein. Verwende STRG+SHIFT+RETURN, um sie einzugeben.

  • Daten validieren: Überprüfe Deine Daten vor der Anwendung der Formeln, um sicherzustellen, dass keine nicht-numerischen Werte vorhanden sind.


FAQ: Häufige Fragen

1. Wie finde ich den nächstkleineren Wert in einer anderen Excel-Version?
Die beschriebenen Methoden funktionieren in den meisten Excel-Versionen, einschließlich Excel 2016 und neuer.

2. Kann ich diese Methode auch für Textwerte anwenden?
Diese spezifischen Methoden sind für numerische Werte gedacht. Für Textwerte müsstest Du eine andere Logik verwenden, da die ABS-Funktion nicht anwendbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige