2016-10-04 8 views
1

Hallo, ich bin neu zu Excel-Makro. Ich wollte ein Makro für vlookup erstellen, so dass ich auf viele Zellen anwenden kann, aber es funktioniert nicht.Excel-Makro VBA auf Vlookup Formel

Sub haha() 

Dim wb As Workbook 
Dim ws, ws1 As Worksheet 
Set wb = ActiveWorkbook 
Set ws = ActiveWorkbook.Sheets(1) 
Set ws1 = ActiveWorkbook.Sheets(2) 
wb.Activate 

ws1.Select 

Range("E1").Formula = "=+VLOOKUP(" & ws1.Range("C6") & "," & ws.Range("c7:d10") & ",2,FALSE)" 

End sub 

Ich wollte einen Wert in meinem aktuellen Blatt auf ein anderes Blatt Palette sehen einen eindeutigen Wert zurückzukehren. Bitte helfen Sie! :)

+1

put '.Address' nach Ihnen zwei Bereiche in der vlookup. –

+0

Bekannt mit Dank! – koky

Antwort

1

ersetzen Sie einfach diese drei Linien:

wb.Activate 
ws1.Select 
Range("E1").Formula = "=+VLOOKUP(" & ws1.Range("C6") & "," & ws.Range("c7:d10") & ",2,FALSE)" 

mit diesem:

ws1.Range("E1").Formula = "=VLOOKUP(C6," & ws.Range("C7:D10").Address(External:=1) & ",2,FALSE)" 

Im ws1.Range("C6") Teil der sheet und address sind in diesem Fall nicht erforderlich, da die Zelle im selben Blatt, wo die Formel so geht ws1.Range("C6") wird immer C6 zurückgeben.

Wie für den ws.Range("c7:d10") Teil benötigen Sie die "externe Referenz", weil es sich auf ein anderes Blatt bezieht. Obwohl der External-Verweis des Range.Address Property den Dateinamen enthält, wird es gelöscht, da die Formel in derselben Arbeitsmappe enthalten ist.

+0

Hallo EEM, diese Alternative funktioniert auch gut! 1 Ich muss viel von euch lernen! :) Vielen Dank! – koky

+0

Beachten Sie, dass bei Verwendung von '.Address (External: = 1) 'der' .Worksheet.Name'-Teil nicht hinzugefügt werden muss, da die Adressfunktion ihn enthält. – EEM

+0

Bekannt mit Dank! Nur eine kurze Frage. Ich habe Makro und VBA aus dem Lehrbuch gelernt. Aber wann immer ich mich im wirklichen Leben bewerbe, werde ich auf einige Probleme stoßen. Wie verbessern wir unsere Makrofähigkeiten, so dass wir anderen in diesem Forum helfen können? Alle Websites, Videos oder Bücher zu empfehlen. – koky

2

Überprüfen Sie dies.

Sub haha() 

Dim wb As Workbook 
Dim ws As Worksheet, ws1 As Worksheet 
Dim rng As Range 
Set wb = ActiveWorkbook 
Set ws = ActiveWorkbook.Sheets(1) 
Set ws1 = ActiveWorkbook.Sheets(2) 
wb.Activate 

Set rng = ws.Range("c7:d10") 
ws1.Range("E1").Formula = "=VLOOKUP(" & ws1.Range("C6").Address & "," & rng.Worksheet.Name & "!" & rng.Address & ",2,FALSE)" 

End Sub 
+0

Hallo beide, es funktioniert perfekt! Nur eine Anfrage - warum verwenden wir .Worksheet.Name und .Address in der vlookup? Danke vielmals! :) – koky

+0

Weil wir in Lookuparray den Blattnamen angeben müssen, aus dem es gehört. –

+0

Vielen Dank! Ich schätze die Hilfe sehr! – koky