Registriert seit: 10.04.2014
Version(en): 2016 + 365
06.06.2018, 16:43
(Dieser Beitrag wurde zuletzt bearbeitet: 06.06.2018, 16:43 von Rabe.)
Hi, ich habe eine Datei übernommen und will die schneller machen. Mit dem folgenden Code-Teil werden aus der Quell-Datei 10 gefilterte (325 aus 7600 Zeilen) Spalten einzeln in andere Spalten der Ziel-Datei kopiert. Wie kann ich diesen 10 mal vorkommenden Block verkürzen? Code: Windows("EVG.xlsb").Activate Sheets("2001").Select Range("I:I").copy Windows("aktuell.xlsm").Activate Sheets("Rohdaten").Select Range("A:A").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Die ganze Kopiererei versuchte ich wegzulassen, das hat aber nicht geklappt: Workbooks("aktuell.xlsm").Sheets("Rohdaten").Range("A:A") = Workbooks("EVG.xlsb").Sheets("2001").Range("I:I") oder so: Code: Workbooks("EVG.xlsb").Sheets("2001").Range("I:AB").copy Workbooks("aktuell.xlsm").Sheets("Rohdaten").Range("R:R").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Die Spalten sind: I nach A, D nach D, K nach V, X nach E, J nach F, H nach G, U nach J, R nach K, E nach O, AB nach R
Registriert seit: 26.07.2017
Version(en): 365
Hi Rabe, hilft dir diese Info dazu weiter: https://www.informatik-aktuell.de/betrie...eiten.htmlViel Erfolg!
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag 28
• Rabe
Registriert seit: 29.09.2015
Version(en): 2030,5
06.06.2018, 17:10
(Dieser Beitrag wurde zuletzt bearbeitet: 06.06.2018, 17:11 von snb.)
Code: Sub M_snb() for j=1 to 10 Workbooks("EVG.xlsb").Sheets("2001").usedrange.columns(choose(j,9,4,11,24,10,8,21,18,5,28)).copy Workbooks("aktuell.xlsm").Sheets("Rohdaten").cells(1,choose(j,1,4,22,5,6,7,10,11,15,18)) next End Sub
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi,
danke erst mal.
@snb: Das teste ich morgen.
@LuckyJoe: Vielleicht schaffe ich es mit dieser Seite auch irgendwann mal, die Array-Verarbeitung zu kapieren.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi snb, nun habe ich es getestet und es funktioniert. Es werden aber die kompletten Zellen eingefügt und ich hätte gerne nur die Werte. Bei Code: Sub M_snb() for j=1 to 10 Workbooks("EVG.xlsb").Sheets("2001").usedrange.columns(choose(j,9,4,11,24,10,8,21,18,5,28)).copy Workbooks("aktuell.xlsm").Sheets("Rohdaten").cells(1,choose(j,1,4,22,5,6,7,10,11,15,18)).PasteSpecial Paste:=xlPasteValues next End Sub
kommt die Fehlermeldung, daß die PasteSpecial-Methode für das Range-Objekt nicht ausgeführt werden könne.
Registriert seit: 13.04.2014
Version(en): 365
08.06.2018, 10:01
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2018, 10:02 von BoskoBiati.)
Hi Ralf, Makro sollte eigentlich so aussehen: Code: Sub M_snb() For j = 1 To 10 Workbooks("EVG.xlsb").Sheets("2001").UsedRange.Columns(Choose(j, 9, 4, 11, 24, 10, 8, 21, 18, 5, 28)).Copy_ Workbooks("aktuell.xlsm").Sheets("Rohdaten").Cells(1, Choose(j, 1, 4, 22, 5, 6, 7, 10, 11, 15, 18)) Next End Sub
keine 2 Zeilen!!!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hi Edgar, (08.06.2018, 08:58)Rabe schrieb: Es werden aber die kompletten Zellen eingefügt und ich hätte gerne nur die Werte. Gruß Uwe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi,
@Edgar ja, so hatte ich es auch, bis ich merkte, daß es alles kopiert und nicht nur die Werte. Dann habe ich es mit PasteSpecial probiert und dann in zwei Zeilen mit PasteSpecial. Den Stand habe ich dann hier eingefügt.
@Uwe ja, genau!
Registriert seit: 13.04.2014
Version(en): 365
08.06.2018, 10:54
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2018, 10:54 von BoskoBiati.)
Hi, ich hatte nur nackte Zahlen in meiner Tabelle, deswegen ist es mir nicht aufgefallen. Bei mir läuft es mit Deinem Code durch ohne zu mucken.Falsch, der Code hat bei mir eine klitzekleine Änderung erfahren: Code: Sub M_snb() For j = 1 To 10 Workbooks("EVG.xlsb").Sheets("2001").UsedRange.Columns(Choose(j, 9, 4, 11, 24, 10, 8, 21, 18, 5, 28)).Copy Workbooks("Aktuell.xlsm").Sheets("Rohdaten").Cells(1, Choose(j, 1, 4, 22, 5, 6, 7, 10, 11, 15, 18)).PasteSpecial Paste:=xlValues Next End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag 28
• Rabe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
08.06.2018, 11:33
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2018, 11:33 von Rabe.)
Hi,
danke. So klappt es.
Komisch, daß es in dem Fall nicht xlPasteValues heißt.
|