Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro SVERWEIS

Makro SVERWEIS
11.06.2008 10:05:39
Tobi
Hallo,
ich habe ein Marko (siehe Anhang) mit welchem ich Spalten von einer Exceldatei in eine andere kopiere. Im Tabellenblatt "Inv" (fett makiert im Makro) möchte ich 2 SVERWEISE einfügen. Im Excel ohne Makro würden Sie so lauten:
=SVERWEIS(A9;'[2008-03-26 PlaTo10_Version 2008.xls]Inv'!$A:$M;12;FALSCH)
=SVERWEIS(A9;'[2008-03-26 PlaTo10_Version 2008.xls]Inv'!$A:$M;13;FALSCH)
Ich benötige das Marko, weil sich die Datei auf welche sich der SVERWEIS bezieht ändert. Das Tabellenblatt "Inv" bleibt aber immer. (es ändert sich nur der Dateiname) Mein Makro hilft mir immer die gewünschte Datei auszuwählen von der die Daten eingespielt werden sollen.
Hier ist mein Makro mit dem ich Spalten kopiere. was muss ich unter den Punkt "Inv" einfügen, dass der Verweis funktioniert?
Vielen Dank für euere Hilfe im Voraus.
Viele Grüße
Tobi
'Daten aus PlaTo kopieren

Sub LoadButton_Click()
Dim Prod As Worksheet
Dim filetoopen As String
Application.ScreenUpdating = False
filetoopen = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
If filetoopen  "False" And filetoopen  "Falsch" And filetoopen  "" Then
Workbooks.Open filetoopen
With ActiveWorkbook
'Produktion
Set Prod = ThisWorkbook.Sheets("Prod")
.Sheets("Prod").Range("A:A").Copy Destination:=Prod.Range("A:A")
.Sheets("Prod").Range("B:B").Copy Destination:=Prod.Range("B:B")
.Sheets("Prod").Range("D:D").Copy Destination:=Prod.Range("BD:BD")
.Sheets("Prod").Range("E:E").Copy Destination:=Prod.Range("BE:BE")
.Sheets("Prod").Range("F:F").Copy Destination:=Prod.Range("BF:BF")
'Umsatz
Set Rev = ThisWorkbook.Sheets("Rev")
.Sheets("Rev").Range("A:A").Copy Destination:=Rev.Range("A:A")
.Sheets("Rev").Range("B:B").Copy Destination:=Rev.Range("B:B")
.Sheets("Rev").Range("C:C").Copy Destination:=Rev.Range("C:C")
'Material
Set Mat = ThisWorkbook.Sheets("Mat")
.Sheets("Mat").Range("A:A").Copy Destination:=Mat.Range("A:A")
.Sheets("Mat").Range("B:B").Copy Destination:=Mat.Range("B:B")
.Sheets("Mat").Range("C:C").Copy Destination:=Mat.Range("C:C")
 'Inv
Set Inv = ThisWorkbook.Sheets("Inv")
.Sheets("Inv").Range("A:G").Copy Destination:=Inv.Range("A:G")
'Fin
Set Fin = ThisWorkbook.Sheets("Fin")
.Sheets("Fin").Range("A:A").Copy Destination:=Fin.Range("A:A")
.Sheets("Fin").Range("B:B").Copy Destination:=Fin.Range("B:B")
.Sheets("Fin").Range("C:C").Copy Destination:=Fin.Range("C:C")
.Sheets("Fin").Range("D:D").Copy Destination:=Fin.Range("D:D")
'Stock
Set Stock = ThisWorkbook.Sheets("Stock")
.Sheets("Stock").Range("A:A").Copy Destination:=Stock.Range("A:A")
.Sheets("Stock").Range("B:B").Copy Destination:=Stock.Range("B:B")
.Sheets("Stock").Range("C:C").Copy Destination:=Stock.Range("C:C")
'Others
Set others = ThisWorkbook.Sheets("Others")
.Sheets("Others").Range("A:A").Copy Destination:=others.Range("A:A")
.Sheets("Others").Range("B:B").Copy Destination:=others.Range("B:B")
.Sheets("others").Range("F:F").Copy
others.Range("BD:BD").PasteSpecial Paste:=xlPasteValues
.Sheets("others").Range("G:G").Copy
others.Range("BE:BE").PasteSpecial Paste:=xlPasteValues
.Sheets("others").Range("H:H").Copy
others.Range("BF:BF").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.Close
End With
End If
Application.ScreenUpdating = True
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro SVERWEIS
11.06.2008 12:51:35
fcs
Hallo Tobi,
du hast nicht angegeben in welchen Spalten die Formeln stehen sollen und in welchem Zeilenbereich.
Im folgenden Beispiel werden dei Formeln in spalten 8 (H) und 9(I) einegtragen ab Zeile 9 bis zur Zeile mit dem letzten Wert in Spalte A. Die Spalten-Nrn und die Zeilenbereiche muss du ggf. anpassen.
Gruß
Franz

'Inv
Set inv = ThisWorkbook.Sheets("Inv")
.Sheets("Inv").Range("A:G").Copy Destination:=inv.Range("A:G")
'Formeln in Spalte 8 (H)
inv.Range(inv.Cells(9, 8), inv.Cells(inv.Cells(inv.Rows.Count, 1).End(xlUp).Row, 8)) _
.FormulaR1C1 = "=VLOOKUP(RC1,'[" & .Name & "]Inv'!C1:C13,12,FALSE)"
'Formeln in Spalte 9 (I)
inv.Range(inv.Cells(9, 9), inv.Cells(inv.Cells(inv.Rows.Count, 1).End(xlUp).Row, 9)) _
.FormulaR1C1 = "=VLOOKUP(RC1,'[" & .Name & "]Inv'!C1:C13,13,FALSE)"


Anzeige
AW: Makro SVERWEIS
11.06.2008 13:19:00
Tobi
Hallo Franz,
vielen Dank für ein Makro. Leider kenne ich mich nicht mit Makros aus und weiß daher nicht genau wie ich die zahlen in die richtige Zelle bekomme.
Die Zahlen sollen in Zelle BI9 und BJ9 reingespielt werden.
Vielen Dank schon mal für deine schnelle Hilfe. Allein hätte ich das Marko nie hinbekommen.
Viele Grüße
tobi

AW: Makro SVERWEIS
11.06.2008 13:58:15
fcs
Hallo Tobi,
Code für Formeln zeichnet man am besten mit dem Recorder auf, indem man die Formel in die Zelle eingibt.
Dann stimmt die Syntax und man muss sich "nur" noch um die variablen Teile kümmern.
Dabei ist meist die Z1S1 (R1C1) schreibweise die geeignetere, weil im Code einfacher zu handhaben als die A1-Zelleadressierung.
Dann muss man noch wissen, dass
- für relative Zellbezüge die Zeilen- und/oder Spaltennummer in eckige Klammern gesetzt wird
- Anführungszeichen (") in der Formel im VBA-Formeltext verdopplet werden müssen ("")
- Semicolons in der Deutschen Formel in VBA-Formula zu Kommas werden
- Dezimalzahlen im Formeltext mit Dezimalpunkt geschrieben werden müssen.
Gruß
Franz

'Formel in Zelle BI9
inv.Range("BI9").FormulaR1C1 = "=VLOOKUP(R[0]C1,'[" & .Name & "]Inv'!C1:C13,12,FALSE)"
'Formel in Zelle BJ9
inv.Range("BJ9").FormulaR1C1 = "=VLOOKUP(R[0]C1,'[" & .Name & "]Inv'!C1:C13,13,FALSE)"


Anzeige
AW: Makro SVERWEIS
11.06.2008 14:48:15
Tobi
Hallo Franz,
da ich kaum was von Markos verstehe, bin ich dir unendlich dankbar für dein Makro. Habe es in meine Exceldatei reinkopiert und ausprobiert.
Es funktioniert perfekt. Habe die richtigen Werte in BI9 und BJ9.
Vielen Dank!
Gruß
Tobi

AW: Makro SVERWEIS
11.06.2008 13:35:00
Tobi
Hallo,
ich habe mal versucht dein Makro anzupassen. Habe anstatt 8 und 9, für die Spalten 61 und 62 eingegeben. Leider funktioniert es nicht.
In Feld A9 steht bei mir "Summe" der Verweis soll das Wort "Summe" in der anderen Datei suchen (die "Summe" ist in Spalte A, aber die Zeile variert) und dann die Spaltenwerte L und M der Summenzeile in die meine Datei in Feld BI9 und BJ9 einspielen.
Danke schon mal im Voraus für deine Hilfe
Gruß
tobi

Anzeige
AW: Makro SVERWEIS
11.06.2008 13:45:00
Tobi
Hallo,
ich bin es nochmal. Sorry, dass ich dir so oft schreibe, aber ich glaub danke deiner Hilfe läuft das Makro bald.
Habe es versucht zu ändern und habe jetzt nochmal was gefunden wo ich die 8 mit 61 und die 9 mit 62 ersetzen musste.
Das Makro funktioniert jetzt und ich habe in den Spalten BI und BJ (jeweils Zeile 9) die gewünschten Daten. Leider spielt mir das Makro aber auch Daten in alle anderen Zeilen so dass da werte bzw. #N/V steht.
Kannst du das Makro vielleicht so ändern, dass es nur den "vlookup" in BI9 und BJ9 einspielt?
Hier noch mal das Makro:
'Investition
Set inv = ThisWorkbook.Sheets("Inv")
.Sheets("Inv").Range("A:G").Copy Destination:=inv.Range("A:G")
'Formeln in Spalte 8 (H)
inv.Range(inv.Cells(9, 61), inv.Cells(inv.Cells(inv.Rows.Count, 1).End(xlUp).Row, 61)) _
.FormulaR1C1 = "=VLOOKUP(RC1,'[" & .Name & "]Inv'!C1:C13,12,FALSE)"
'Formeln in Spalte 9 (I)
inv.Range(inv.Cells(9, 62), inv.Cells(inv.Cells(inv.Rows.Count, 1).End(xlUp).Row, 62)) _
.FormulaR1C1 = "=VLOOKUP(RC1,'[" & .Name & "]Inv'!C1:C13,13,FALSE)"
Danke für Deine Hilfe!
Viele Grüße
Tobi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige