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
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese wird FINDEN() aus der unten:
Ich landete revmoving die "after:=" Teil und war in der Lage, die genaue Angabe der Reichweite. Es wird perfekt nach. Danke für den code.
Ich möchte noch hinzufügen, stellen Sie sicher, dass Nach argument nicht angegeben, wie die folgende: , Nach:=searchRng(searchRng.Zellen.Graf)
InformationsquelleAutor Gary's Student
die nach der Zelle angegeben werden in den Suche-Bereich; wenn Sie entfernen nach:=, dann ist die aktive Zelle ist die Zelle nach.
InformationsquelleAutor Fen