Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wert suchen

Wert suchen
26.01.2008 10:43:00
Stefan
Hallo zusammen,
ich muss Werte aus mehreren Spalte suchen, wobei jede Spalte ca. 25000 Zeilen hat.
Um mir die Arbeit zu erleichtern, bin ich gerade dabei, möchte ich mir einen Code in VBA erstellen.
Von den Zugriffen auf richtige Datenbanken weiss ich, das es eine "Suchbeschleunigung" durch die Eigenschaft "indiziert" gibt. Dabei fängt der Suchlauf nicht am Anfang an, sondern springt in die Mitte der Datenspalte (hier Zeile 12500), vergleicht dann, ob der Wert kleiner/größer als der Suchwert ist. Wenn kleiner, geht es weiter bei Zeile 6250, hier wird dann wieder nach kleiner/größer Suchwert "gefragt". Dies wiederholt sich sooft, bis der Wert gefunden wurde.
Nach diesem Grundprinzip möchte ich gerne meinen Suchcode aufbauen.
Hat jemand so was schon mal gemacht? Oder geht das auch einfacher?
Bin für jeden Tipp dankbar.
Gruß
Stefan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert suchen
26.01.2008 11:03:00
Ramses
Hallo
Bei nur 25000 Zeilen musst du keine Suchoptimierung programmieren.
Ausserdem setzt dies eine Indexierung voraus die EXCEL, in dem von dir genannten Zusammenhang, nicht unterstützt.
Benutze die Find-Methode. Da merkst du sowieso keine Verzögerung.
Hier mal ein Beispiel:
Function simple_FindF(fStr As Variant) As String
    'by Ramses
    'Sucht Begriff in jeder Tabelle der Mappe
    'und zeigt an ob gefunden oder nicht
    'Aufruf in B1 mit =Simple_Find(A1)
    'wenn der Suchbegriff in A1 steht
    Dim wks As Worksheet, myC As Excel.Range
    For Each wks In ThisWorkbook.Worksheets
        If wks.name <> ActiveSheet.name Then
            With wks.UsedRange
                Set myC = .Find(fStr, LookIn:=xlValues)
                If Not myC Is Nothing Then
                    simple_FindF = "Begriff in " & wks.name & myC.Address
                    'Wenn Zelle nicht ausgewählt werden soll
                    'die nächsten beiden Zeilen mit Hochkomma auskommentieren
                    .Select
                    myC.Select
                    Exit Function
                Else
                    simple_FindF = "Nicht gefunden"
                End If
            End With
        End If
    Next
End Function

Gruss Rainer

Anzeige
AW: Wert suchen
26.01.2008 11:13:58
Stefan
Hallo Rainer,
Danke für den Tipp. Wahrscheinlich hast du recht, das man zeitlich sowieso nichts merkt. Der Code soll zwar mehrer Spalten durchlaufen mit je ca. 25000 Zeilen, aber ich versuchs mal mit deinem Code.
Ein schönes Wochenende.
Gruß
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige