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

Forumthread: Nächst größeren Wert VBA

Nächst größeren Wert VBA
25.01.2017 10:54:29
Nermin
Hallo liebe Community,
wie krieg ich das am besten hin dass mein Code nach einem Wert sucht und wenn dieser nicht gefunden wird den nächst größeren wert dann annimmt. Bspw.: gesucht 10 aber 10 nicht da sondern 8 und 12 und dann soll 12 gewählt werden?
Vielen Dank für eure Hilfe!
Excellente Grüße,
Nermin
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nächst größeren Wert VBA
25.01.2017 11:02:24
Max2
Application.WorksheetFunction.Max gibt dir die größte Zahl wieder
Hier Beispiel Mappe: https://www.herber.de/bbs/user/110863.xlsm
einfach auf das Knöpfchen drücken
AW: Nächst größeren Wert VBA
25.01.2017 11:12:56
Anton
Hi Nermin,
application.worksheetfunction.large(range,1) wäre auch noch eine Möglichkeit.
VG Anton
Anzeige
AW: Nächst größeren Wert VBA
25.01.2017 11:31:41
Nermin
Hallo Anton,
Probiere ich mal aus danke!
Excellente Grüße,
Nermin
AW: Nächst größeren Wert VBA
25.01.2017 11:30:49
Nermin
Hallo Max2,
Dann habe ich aber den größten Wert und nicht den nächst größeren :)
Vielen Dank,
Excellente Grüße,
Nermin
AW: Nächst größeren Wert VBA
25.01.2017 11:30:51
Nermin
Hallo Max2,
Dann habe ich aber den größten Wert und nicht den nächst größeren :)
Vielen Dank,
Excellente Grüße,
Nermin
Anzeige
AW: Nächst größeren Wert VBA
25.01.2017 11:21:55
EtoPHG
Hallo Nermin,
Beide obigen antworten gehen m.E. an deiner Anfrage vorbei, da beide den grössten Wert eines Bereichs liefern und nicht den nächst grösseren eines Gesuchten.
Die Frage ist, ob der Bereich eine geordnete (sortierte) Liste von Werten enthält. Dann würde sich z.B. die SVERWEIS Formel anbieten. Wenn nicht ev. Bereich sortieren / SVERWEIS / und wieder zurückstellen. Oder per RANG-Formel, nächst-kleineren Rang suchen etc. etc.
Bei dem angegeben Level eigentlich eine triviale Forderung.
Gruess Hansueli
Anzeige
AW: Nächst größeren Wert VBA
25.01.2017 11:29:48
Nermin
Hallo Hansueli,
meine frage ist auch einfach gestellt da ich einen Denkanstoß brauche. Ich möchte es nicht per Excel Funktion lösen sondern per vba und der nächst größere Wert ist der Wert an dem ich mich orientiere, den ich will je nach eingabe und einstellungen bestimmte informationen abrufen und eintragen die mit dem Wert 12 ( um sich auf das Beispiel zu beziehen) verbunden sind, sofern wert 10 nicht vorhanden ist. Eine Interpolation wäre natürlich die optimale Lösung nur grüble ich noch wie ich diese hinbekommen soll.
Trotzdem danke!
Excellente Grüße!
Anzeige
AW: Nächst größeren Wert VBA
25.01.2017 11:53:53
Max2
Habe jetzt einfach mal was auf die schnelle geschrieben.
Der Code ist nicht als Lösung gemeint sondern eben nur eine Idee.
Hier die Beispiel Mappe: https://www.herber.de/bbs/user/110865.xlsm
AW: Nächst größeren Wert VBA
25.01.2017 13:42:29
Nermin
Hey Max2,
Muss ich zuhause am Lappy ausprobieren, der Browserschutz auf der Arbeit sieht deine Datei als potenzielles Risiko an -.- Trotzdem vielen Dank!
Excellente Grüße,
Nermin
Anzeige
bei Bedarf auch mit Formel ...
25.01.2017 13:45:01
Matthias
Hallo
Geht bei Bedarf auch mit Formeln.
Tabelle1

 ABC
1515  
2126gesucht:772
3787nächster:=787
4681  
5146  
6600  
7842  
8925  
9139  
10281  
11363  
12547  
13772  
14203  
15430  
16259  
17253  
18679  
19485  
20837  

Formeln der Tabelle
ZelleFormel
C3{=MIN(WENN($A$1:$A$20>$C$2;A1:A20))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Matthias
Anzeige
AW: Nächst größeren Wert VBA
25.01.2017 12:39:55
ChrisL
Hi Nermin
Noch eine Idee...
Sub t() Dim rng As Range, i As Long Dim rngBereich As Range: Set rngBereich = Range("A1:A14") Const GrenzWert As Integer = 10 ReDim ar(rngBereich.Cells.Count) As Variant For Each rng In rngBereich.Cells If rng >= GrenzWert Then ar(i) = rng.Value i = i + 1 End If Next rng MsgBox WorksheetFunction.Min(ar) End Sub cu
Chris
Anzeige
eine kleine function und gut is...
25.01.2017 13:20:50
EtoPHG
Hallo Nermin,
...nicht als Anstoss, sondern als Lösung ;-)
Public Function findNext(suchkriterium As Double, bereich As Range) As Double
Dim rC As Range
For Each rC In bereich
If rC >= suchkriterium Then
If findNext = 0 Or rC 

Kann damit auch als Formel im Tabellenblatt gebraucht werden.
Gruess Hansueli
Anzeige
AW: eine kleine function und gut is...
25.01.2017 13:40:57
Nermin
HEy Hansueli,
war inner Mittagspause :P Probiere es gleich aus,
DANKE!
Excellente Grüße,
Nermin
AW: eine kleine function und gut is...
26.01.2017 08:59:09
Nermin
Hey Hansueli,
Funzt super! Jetzt muss ich daraus nur ein Sub machen, dass dieser automatisch weiß wo er das suchkriterium findet und in welchem Bereich (der variabel ist) suchen muss.
Ansonsten Top!
:)
DANKE!
Excellente Grüße,
Nermin
Anzeige
Aus Function Sub machen, hääää ?
26.01.2017 11:32:09
EtoPHG
Hallo Nermin,
Warum ums Himmelswille willst du daraus ein Sub machen?
Benutz doch in deiner Sub die Function! Diese hat ja sowohl suchkriterium, als auch Bereich als Variable!
Gruess Hansueli
Danke fürs ignorieren ... owT
26.01.2017 21:04:33
Matthias
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Nächst größeren Wert in Excel VBA finden


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblatt)“ und wähle „Einfügen“ -> „Modul“.

  3. Code eingeben: Füge den folgenden Code in das Modul ein, um den nächst größeren Wert zu finden:

    Public Function findNext(suchkriterium As Double, bereich As Range) As Double
       Dim rC As Range
       For Each rC In bereich
           If rC >= suchkriterium Then
               If findNext = 0 Or rC < findNext Then
                   findNext = rC
               End If
           End If
       Next rC
    End Function
  4. Anwendung: Du kannst diese Funktion in einer Zelle verwenden, indem du z.B. =findNext(10; A1:A20) eingibst, um den nächst größeren Wert zu finden.


Häufige Fehler und Lösungen

  • Fehler: „Typ nicht übereinstimmend“

    • Lösung: Stelle sicher, dass der Bereich nur Zahlen enthält. Text in der Auswahl kann diesen Fehler verursachen.
  • Fehler: „Funktion gibt 0 zurück“

    • Lösung: Überprüfe, ob der gesuchte Wert kleiner oder gleich dem größten Wert im angegebenen Bereich ist. Ansonsten wird 0 zurückgegeben.

Alternative Methoden

Falls du nicht mit VBA arbeiten möchtest, kannst du auch Excel-Funktionen verwenden:

  1. SVERWEIS: Wenn der Bereich sortiert ist, kannst du die SVERWEIS-Funktion verwenden.

    =SVERWEIS(10; A1:A20; 1; WAHR)
  2. MIN und WENN: Um den nächst größeren Wert zu finden:

    =MIN(WENN(A1:A20 > 10; A1:A20))

    Diese Formel muss mit STRG + UMSCHALT + EINGABE eingegeben werden, da es sich um eine Matrixformel handelt.


Praktische Beispiele

  • Beispiel 1: Du hast eine Liste von Verkaufszahlen in den Zellen A1 bis A10 und suchst den nächst größeren Wert nach 500.

    • VBA-Anwendung: =findNext(500; A1:A10)
  • Beispiel 2: In einer sortierten Liste von Testergebnissen möchtest du den nächst größeren Wert nach 75 finden.

    • Excel-Anwendung: =SVERWEIS(75; A1:A10; 1; WAHR)

Tipps für Profis

  • Dynamische Bereiche: Du kannst die findNext-Funktion erweitern, um dynamische Bereiche zu erstellen, z.B. mit Offset oder CurrentRegion, um automatisch nach dem nächsten größeren Wert in einer sich ändernden Datenmenge zu suchen.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung im VBA-Code, um unerwartete Eingaben zu managen und die Benutzerfreundlichkeit zu erhöhen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Funktion in einer Zelle verwenden?
Antwort: Du benutzt die Funktion wie jede andere Excel-Funktion, z.B. =findNext(10; A1:A20).

2. Frage
Was passiert, wenn der gesuchte Wert nicht vorhanden ist?
Antwort: Wenn der gesuchte Wert nicht im Bereich vorhanden ist, gibt die Funktion den nächst größeren Wert oder 0 zurück, wenn kein größerer Wert gefunden wird.

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