Makro excel 2007 VERWEIS

Hallo, ich habe folgendes Problem:
zwei Dateien.xlsm mit mehrere Tabellen
die Anzahl der Zeilen in den Tabellen sind nicht fix!

Datei1.xlsm Tabelle2 Spalte A, Spalte B
Datei2.xlsm Tabelle1 Spalte A, Spalte C

D_2.T_1.S_C =
VERWEIS(Suchkriterium; Suchvektor ; Ergebnisvektor)
VERWEIS(D_2.T_1.S_A ; D_1.T_1.S_A; D_1.T_2.S_B )

Wie erfolgt dieser VERWEIS per Makro?

Wäre super wenn mir jemand helfen könnte, Danke im Voraus
Viele Grüße
alpha_golf

D_2.T_1.S_C =
VERWEIS(Suchkriterium; Suchvektor ; Ergebnisvektor)
VERWEIS(D_2.T_1.S_A ; D_1.T_1.S_A; D_1.T_2.S_B )
Wie erfolgt dieser VERWEIS per Makro?

Hallo alpha_golf,

schau mal auf deinen Rechner, da müßte eine Vbaliste.xls bzw. vbaliste.xls sein.
Die hat zwei Blätter mit dt-engl. Übersetzungen.

Verweis ist LookUp.

D_2.T_1.S_C = Application.lookup(Suchkriterium, Suchvektor , Ergebnisvektor)

Natürlich die parameter in VBa-Schreibweise
Excel: Suchkriterium: A1
Vba: Suchkriterium: Range(„A1“)
Trennzeichen ist das Komma.

Gruß
Reinhard

Hallo Reinhard,
Danke für die schnelle Hilfe, und auch schöne Feiertage, bei uns in
Franken schneit es fürchterlich.
Das mit verweis bzw. lookup is mir klar, ich habe aber ein anderes
Problem:
ich kann die Bereich nicht fix defineren, da diese immer wieder neu
aufgebaut werden und unterschiedlich groß sein können!
also z.B.: $A$1:blush:A$10 kann ich nicht benutzen es muß variabler sein.
Danke für Deine Hilfe
Wolfgang

Hallo Wolfgang,

Danke für die schnelle Hilfe, und auch schöne Feiertage, bei
uns in
Franken schneit es fürchterlich.

was heißt bei euch in Franken, hier in F ist auch Franken :smile:)
Jedenfalls waren da wohl früher mal paar Franken die Sachsen auf der Spur und wollten sie vermöbeln, da kamen sie an den Main, irgendeine weiße Hirschkuh erschien und zeigte ihnen eine Furt durch den Fluß.
Die Sachsen kamen an, konnten wohl nicht schwimmen oder Boote bauen, jedenfalls lagerten sie auf der anderen Flußseite.

Seitdem heißt das Sachsenhausen und da wo die Franken waren Frankfurt.
Und wir hier hatten schon letzten Winter ausnahmsweise relativ viel Schnee, jetzt wurde das noch locker getoppt.
Aber ist natürlich alles relativ. Was hier viel ist, so ca. 20 cm Schnee, andernorts wären sie grad jetzt sehr froh, sie hätten nur so wenig.

Okay, hatte jetzzt mit Excel wennig zu tun.

ich kann die Bereich nicht fix defineren, da diese immer
wieder neu
aufgebaut werden und unterschiedlich groß sein können!
also z.B.: $A$1:blush:A$10 kann ich nicht benutzen es muß variabler
sein.

Excelformeln sind sauschnell. Klar, wenn sie in XL2007 in Tausenden von Zellen stehen, kann es schon mal langsamer werden.

Davon abgesehen könntest du grundsätzlich mit
Range(„A:A“)
bzw.
Columns(1)
arbeiten

Lookup liefert u.U. ein falsches Ergebnis, ist also sicherer vorher abzuprüfen ob es den Suchbegriff auch in der Spalte gibt.
Z.B. hier kommt ein Ergebnis, obwohl es den Suchbegriff gar nicht in A gibt:

Sub nn()
MsgBox Application.Lookup(„xödueo96n“, Range(„A:A“), Range(„B:B“))
End Sub

Die unterste gefüllte Zelle einer Spalte ermittelt man mit „End“.

Sub such()
Dim Zei As Long, Erg
Zei = Cells(Rows.Count, 1).End(xlUp).Row
If Application.CountIf(Range("A1:A" & Zei), "x") \> 0 Then
 Erg = Application.Lookup("x", Range("A1:A" & Zei), Range("B1:B" & Zei))
 MsgBox Erg
Else
 MsgBox "nicht vorhanden"
End If
End Sub

Gruß
Renhard

Hallo Reinhard
Ich wünsche Dir ein Gutes Neues jahr
Bin erst gestern aus dem Ski-Urlaub zurück.
Habe mal versucht entsprechend Deinen Vorgaben was aufzubauen.
Es funzt auch, habe jedoch noch ein Problem:
Wenn in der Tabelle: Liste nur eine Zeile steht, dann kommt in Tabelle: Dispo als Wert nicht der Wert der einen Zeile von Tabelle: Liste sondern: #Wert!
Ab 2 Zeilen mit Werten funzt es!
Wie kann ich das verhindern?
_
For i = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1
’ Anzahl Zeilen
Dim Zei As Long
Zei = Worksheets(„Liste“).Cells(Rows.Count, 1).End(xlUp).Row
’ Defintion: Lookup
s = Worksheets(„Dispo“).Cells(i, „A“).Value
t = Worksheets(„Liste“).Range(„C1:C“ & Zei).Value
u = Worksheets(„Liste“).Range(„A1:A“ & Zei).Value
’ Lookup
If Cells(i, 9).Value „“ Then Cells(i, „N“).Value = Application.Lookup(s, t, u)
Next i
_
Gruß Wolfgang

Wenn in der Tabelle: Liste nur eine Zeile steht, dann kommt in
Tabelle: Dispo als Wert nicht der Wert der einen Zeile von
Tabelle: Liste sondern: #Wert!
Ab 2 Zeilen mit Werten funzt es!
For i = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1
’ Anzahl Zeilen
Dim Zei As Long
Zei = Worksheets(„Liste“).Cells(Rows.Count,
1).End(xlUp).Row
’ Defintion: Lookup
s = Worksheets(„Dispo“).Cells(i, „A“).Value
t = Worksheets(„Liste“).Range(„C1:C“ & Zei).Value
u = Worksheets(„Liste“).Range(„A1:A“ & Zei).Value
’ Lookup
If Cells(i, 9).Value „“ Then Cells(i, „N“).Value =
Application.Lookup(s, t, u)
Next i

Hallo Wolfgang,

referenziere bitte mal die drei Cells(…), also Blattnamen davorschreiben wie bei den anderen.

Und, du prüfst ob Cells(i, 9) ungleich leer ist, dann suchst du aber Cells(i, „A“) ?

Die Tabelle in „Liste“ hat die Überschrift in Zeile 1?

Gruß
Reinhard