Führen Sie eine Suche durch, innerhalb von vba-von unten einer Reichweite bis

Guten Tag,

Ist es möglich, für Find starten von der Unterseite des Bereichs und arbeiten? Was ich möchte ist mein code, um zunächst einen Datensatz Nummer, die sich auf einem master-Liste. Sobald es findet die record-Nummer, die ich möchte es zu zuweisen, die sich name, ein offset von der record-Nummer, um eine variable und dann suchen, bis Sie die master-Liste für das erste Geschäft mit dem gleichen Namen.

Aktuell habe ich code, der findet die record-Nummer, weist das Angebot Namen eine variable, und loop ' s bis jede Zelle, bis es eine übereinstimmung findet. Obwohl diese Art funktioniert, die Schleife Bearbeitungszeit ist deutlich langsamer als die find-Verarbeitung Zeit und ich bin auf der Suche nach der schnellsten Lösung.

Wenn die umgekehrte finden, ist nicht eine Möglichkeit, würde einem SVERWEIS arbeiten? Möglicherweise durch, erstellen eine Reihe Beginn 1 Zeile oben die Datensatznummer an die Spitze und haben SVERWEIS finden, die Letzte Zeit?

Jede Hilfe ist willkommen.

PendingBRow = ThisWorkbook.Sheets("PendingLog").Range("A65000").End(xlUp).Row
MasterBRow = ThisWorkbook.Sheets("MasterLog").Range("A65000").End(xlUp).Row

For D = 2 To PendingBRow
    With ThisWorkbook.Sheets("PendingLog").Range("A" & D)
        PendingRecNum = .Value
        PendingDealName = .offset(0, 3).Value
        PDLenght = Len(PendingDealName) - 4
        PendingDealName = Left(PendingDealName, PDLenght)
        PendingDealName = UCase(PendingDealName)
        PendingDealName = Trim(PendingDealName)
    End With

    With ThisWorkbook.Sheets("MasterLog").Range("B2:B" & MasterBRow)
        Set c = .Find(PendingRecNum, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstRow = c.Row - 1

            O = 1
            Do Until firstRow = O
                LastWorkedBy = ThisWorkbook.Sheets("MasterLog").Range("E" & firstRow).offset(0, 20)
                MasterRecNum = ThisWorkbook.Sheets("MasterLog").Range("E" & firstRow).offset(0, -3).Value
                dealName = ThisWorkbook.Sheets("MasterLog").Range("E" & firstRow).Value
                dealName = Left(dealName, 10)
                dealName = UCase(dealName)
                dealName = Trim(dealName)

                If PendingDealName = dealName Then
                    MasterLastWorkedBy = LastWorkedBy
                    ThisWorkbook.Sheets("PendingLog").Range("A" & D).offset(0, 19).Value = MasterLastWorkedBy

                    firstRow = O
                Else
                    firstRow = firstRow - 1
                End If

            Loop

        End If
    End With

Next D
Hallo! Bitte geben Sie den jeweiligen code, den Sie derzeit verwenden, als auch als code / Formeln für die Lösungen, die Sie versucht haben, schon. außerdem: mit den Lösungen, die Sie bereits versucht, warum Sie nicht arbeiten (haben Sie Fehler? hast du schlechte Ergebnisse? und wenn schlechte Ergebnisse, warum sind Sie schlecht?) Dies wird uns helfen, das problem zu diagnostizieren und Ihnen helfen, eine bessere Lösung 🙂
Danke für Ihre Antwort und ich poste meinen code kurz. Aber, nur um klar zu sein, der code, den ich habe, funktioniert einwandfrei. Ich bin vor allem gespannt, ob Reverse-Finden, ist noch möglich, und wenn nicht, ist mein SVERWEIS Vorschlag scheinen, wie eine vernünftige alternative.

InformationsquelleAutor John W | 2014-03-17

Schreibe einen Kommentar