Excel-vba nicht in der Lage, um die Vlookup-Eigenschaft
Ich weiß, es gibt eine Menge von diesen Fragen hier aber ich kann nicht sehen was schief läuft.
Ich habe den folgenden code, die überprüft, ob ein Wert in einer Spalte in einer anderen Arbeitsmappe.
Dim masterWbk As Workbook
Dim oWbk As Workbook
Dim RowCount As Integer
Dim LookupRange As Range
Dim Exists As Variant
Dim a As Integer
Dim i As Integer
Dim jobnumber As String
RowCount = WorksheetFunction.CountA(Sheets("Sheet1").Range("A1").EntireColumn)
masterWbk.Activate
Set LookupRange = masterWbk.Sheets("Sheet1").Range("C1:C100")
a = 0
For i = 0 To RowCount - 1
jobnumber = oWbk.Sheets("Sheet1").Range("A2").Offset(i, 0).Value
' On Error GoTo ExistsError:
Exists = Application.WorksheetFunction.VLookup(jobnumber, LookupRange, 1, False)
Nun der Wert ist definitiv in der die lookup-Bereich und formatiert ist die gleiche, aber der SVERWEIS einfach nicht funktioniert. Es funktioniert wie eine excel-Formel.
Was habe ich verpasst?
Die Sie verwenden können .Finden statt SVERWEIS
Wo haben Sie die
Ich habe Ihnen weiter oben in den code, sondern ließ Sie, denn es ist nicht das, was das Problem verursacht.
Sie bekommen eine Fehlermeldung, oder ist Vorhanden = false? Ist es case-Sensitiv? Sind Sie auf der Suche nach einem numerischen Wert oder einen string-Wert?
es ist mir run-time error 1004. Es ist die Suche nach einer Zeichenfolge. Es formatiert ist die gleiche in beiden Arbeitsmappen, so sollte es keine Rolle
Wo haben Sie die
masterWbk
und oWbk
?Ich habe Ihnen weiter oben in den code, sondern ließ Sie, denn es ist nicht das, was das Problem verursacht.
Sie bekommen eine Fehlermeldung, oder ist Vorhanden = false? Ist es case-Sensitiv? Sind Sie auf der Suche nach einem numerischen Wert oder einen string-Wert?
es ist mir run-time error 1004. Es ist die Suche nach einer Zeichenfolge. Es formatiert ist die gleiche in beiden Arbeitsmappen, so sollte es keine Rolle
InformationsquelleAutor evoandy | 2013-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung finden, würde es so Aussehen-
InformationsquelleAutor scott
Ich denke, es ist ein problem mit der Dokumentation von
WorksheetFunction.Vlookup
. In meinen tests, die auf Excel 2007, wenn der such-string gefunden wird, wird der Wert der entsprechenden Zelle zurückgegeben. Wenn Sie nach einer genauen übereinstimmung, erhalten Sie den gefürchteten Fehler 1004.Wenn Sie möchten, verwenden Sie SVERWEIS,
Wenn Sie
Application.Vlookup()
stattApplication.WorksheetFunction.VLookup()
dann im Falle Ihres Suchwert nicht gefunden wird, wird statt eine Fehlermeldung ausgelöst wird, ist der Rückgabewert eine Fehlermeldung, die Sie testen können, für die VerwendungIsError()
. Dasselbe gilt für die anderen WSFunctions: löschen derWorkSheetFunction
macht alles leichter zu behandeln.VLookup soll in der Lage sein, um zurückzukehren genaue übereinstimmung. Der SVERWEIS funktioniert in Excel 2010. Ich bin in der Lage, zurückzukehren, die genaue übereinstimmung mit dem Wert aus Spalte 1-lookup-array.
vielen Dank für diesen Tipp, das scheint nicht erwähnt werden in der offiziellen Dokumentation. evoandy, die Sie tun können, eine genaue übereinstimmung mit WorksheetfunctionVlookup aber es löst einen Fehler aus, wenn der Wert nicht gefunden wird
InformationsquelleAutor grahamj42
Dieser scheint gut zu funktionieren in Excel 2010...
Ich würde vorschlagen, Sie sind wahrscheinlich immer ein Fehler mit SVERWEIS, da hast du dimensionierte
jobNumber
als String und trotz dem Arbeitsblatt in der Zelle "Formatierung", die job-Nummern in Ihre Arbeitsblätter sind wahrscheinlich gespeichert, die als numerische Werte.So, das problem ist, dass "123" <> 123. Testen Sie, ob jobNumber numerisch ist, und dann stellen Sie sicher, vorbei sind die richtige Art von Daten zu der Funktion.
InformationsquelleAutor David Zemens