Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suche rückwärts nach Wert wenn Bedingung erfuellt

Suche rückwärts nach Wert wenn Bedingung erfuellt
13.01.2009 07:45:09
Horst
Hey !
Ich schreibe suchmakros.
Mir find("suchwert") kann ich nache einem bestimmten Inhalt einen Zelle suchen...
O.K.
jetzt möchte ich nach einem Wert in einer zelle suchen der eine bestimmte Bedingung erfüllt.
Zum Bespiel möchte ich nach einem Datum in einer suchen...
wenn dieses Datum aber nicht vorhanden ist dann nimm die Zelle mit dem nächst kleineren Datum was gefunden wird und selektiere die Zelle.
For Each Zelle Tabelle1.Range("A1:A100")
If Zelle.Value boolscherAusdruck suchdatum Then
Zelle.select
End If
Next
Zelle
Geht das auch allgemeiner ohne For schleife...
Dann möchte ich das ganze auch noch rückwärts, geht mit find und for each nicht, oder?
Wie mache ich das?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche rückwärts nach Wert wenn Bedingung erfuellt
13.01.2009 08:38:00
Tino
Hallo,
da es beim Suchen von Datumswerten immer Probleme gibt mit der Find Funktion, hier ein e Variante mit der Match Funktion.
Es wird das aktuelle Datum im Bereich gesucht,
wird dieses nicht gefunden, wird das nächst kleinere gesucht.
Getestet unter xl2007
Option Explicit

Sub SuchDatum()
Dim LRow
Dim SuchBereich As Range
Set SuchBereich = Tabelle1.Range("A1:A100")

With Application
    'aktuelles Datum suchen und die Zeile aus der Matrix zurückgeben 
    LRow = Application.Match(CLng(Date), SuchBereich, 0)

    If IsNumeric(LRow) Then 'aktuelles Datum gefunden? 
      MsgBox "Datum gefunden in: " & Chr(13) & SuchBereich(LRow).Address(0, 0)
    Else
 
    'nächst kleinere Datum suchen und die Zeile aus der Matrix zurückgeben 
    LRow = _
    .Match(.Small(SuchBereich, .CountIf(SuchBereich, "<=" & CLng(Date))), SuchBereich, 0)
  
    If IsNumeric(LRow) Then
      MsgBox "nächst kleinere Datum gefunden in: " & Chr(13) & _
              vbTab & SuchBereich(LRow).Address(0, 0) & Chr(13) & _
              "das Datum lautet: " & Chr(13) & _
              vbTab & SuchBereich(LRow)
              
    Else 'kein Datum gefunden 
      MsgBox "Es wurde kein Datum gefunden!"
    End If

End If

End With

End Sub


Gruß Tino

Anzeige
so geht es auch.
13.01.2009 09:19:02
Tino
Hallo,
so kann man es auch machen.
Option Explicit

Sub SuchDatum()
Dim LRow
Dim SuchBereich As Range
Set SuchBereich = Tabelle1.Range("A1:A100")

With Application

    LRow = _
    .Match(.Small(SuchBereich, .CountIf(SuchBereich, "<=" & CLng(Date))), SuchBereich, 0)
  
    If IsNumeric(LRow) Then 'Datum gefunden 
        If SuchBereich(LRow) < Date Then 'Datum ist kleiner? 
         MsgBox "nächst kleinere Datum gefunden in: " & Chr(13) & _
                 vbTab & SuchBereich(LRow).Address(0, 0) & Chr(13) & _
                 "das Datum lautet: " & Chr(13) & _
                 vbTab & SuchBereich(LRow)
        Else 'Datum ist aktuell 
         MsgBox "Datum gefunden in: " & Chr(13) & SuchBereich(LRow).Address(0, 0)
        End If
    Else 'kein Datum gefunden 
      MsgBox "Es wurde kein Datum gefunden!"
    End If



End With

End Sub


Gruß Tino

Anzeige
AW: Suche rückwärts nach Wert wenn Bedingung erfuellt
13.01.2009 08:53:46
Chris
Servus,
mit Find rückwärts, als Beispiel:
Option Explicit

Sub t()
Dim rSuche As Range, rFinde As Range, SuchDatum As Date
Set rFinde = Range("A:A")
SuchDatum = "10.01.2008"
Do
Set rSuche = rFinde.Find(what:=SuchDatum, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:= _
xlPrevious)
If Not rSuche Is Nothing Then
rSuche.Select
Exit Sub
Else
SuchDatum = SuchDatum - 1
End If
Loop Until SuchDatum = "01.01.2000"
End Sub


Gruß
Chris

AW: Suche rückwärts nach Wert wenn Bedingung erfue
13.01.2009 12:08:00
Horst
Danke Euch allen

334 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige