Das Archiv des Excel-Forums

Datensatz kopieren+einfügen - Code verinfachen

nach unten


Betrifft: Datensatz kopieren+einfügen - Code verinfachen
von: Christian Schilling

Geschrieben am: 23.09.2019 12:23:57

Grüßt euch,
Für ein Projekt habe ich den unten stehenden Code geschrieben. Mit diesem sollen Daten(Aktienkursdaten) von Tabellenblatt "Eingabe" in Tabellenblatt "Daten" verschoben werden und anschließend die Spalte A5 und B5 bis Ende geleert werden. Des Weiteren sollen ein paar Spezifische Kenndaten, wie Name ISIN und Variablentyp in das Tabellenblatt "Daten" kopiert werden.
Die Daten aus Tabellenblatt "Eingabe" sollen die bereits verschobenen Daten im Tabellenblatt "Daten" nicht überschreiben, sondern in einer Spalte direkt daneben eingefügt werden.
Bisher sind es meistens ca. 250 Kursdaten sowie Datumsangaben welche kopiert werden sollen. Jedoch kann die Anzahl auch auf mehere tausend ansteigen.
Da mein bisheriger Code sehr langsam ist, würde ich gern einen Vorschlag für eine schnellere Variante bekommen.
(der letzte Wert des Datensatz soll nicht mitkopiert werden, da dieser meist fehlerbehaftet ist.)
Vielen Dank
Christian


Sub DatenkopierenEinfügen()
'Variablen definieren
Dim i As Long
Dim n As Long
Dim letzteZeile As Integer
Dim letzteSpalte As Integer
Dim Eingabe As Worksheet
Dim Daten As Worksheet
Set Eingabe = ThisWorkbook.Worksheets("Eingabe")
Set Daten = ThisWorkbook.Worksheets("Daten")
'ermittelt die letzte Zeile. Zählt von der letzten Reihe rückwärts bis zur ersten beschriebenen  _
Zeile.
letzteZeile = Eingabe.Cells(Rows.Count, 2).End(xlUp).Row
'ermitteln welches die erste leere Spalte ist.
letzteSpalte = Daten.Cells(2, Columns.Count).End(xlToLeft).Column
n = letzteSpalte + 1
'Zeilen und Spalten in Tabellenblatt Daten fixieren.
Daten.Activate
Range("B5").Activate
ActiveWindow.FreezePanes = True
Eingabe.Activate
'Kopiert die Überschriften und Indexspezifischen Daten
Eingabe.Cells(1, 2).Cut Destination:=Daten.Cells(1, n)
Eingabe.Cells(2, 2).Cut Destination:=Daten.Cells(2, n)
Eingabe.Cells(3, 2).Cut Destination:=Daten.Cells(3, n)
'Kopiert Daten aus Spalte A und B in neues Tabellenblatt
For i = 5 To letzteZeile - 1
Eingabe.Cells(i, 1).Copy Destination:=Daten.Cells(i, 1)
Eingabe.Cells(i, 2).Cut Destination:=Daten.Cells(i, n)
Daten.Cells(4, 2).Copy Destination:=Daten.Cells(4, n)
Next i
Eingabe.Range("B1").SpecialCells(xlCellTypeLastCell).Clear
End Sub


Betrifft: AW: Datensatz kopieren+einfügen - Code verinfachen
von: ChrisL
Geschrieben am: 23.09.2019 13:10:28
Hi Christian
Die üblichen Tipps ScreenUpdating Calculation etc. findest du in der Recherche.
Hauptsächlich kannst du den Prozess aber beschleunigen, wenn du die Zellen nicht einzeln (in der Schleife), sondern am Stück kopierst.
Eingabe.Range(Eingabe.Cells(5, 1), Eingabe.Cells(letzteZeile - 1, 1)).Copy Destination:=Daten.Cells(5, 1)
Eingabe.Range(Eingabe.Cells(5, 2), Eingabe.Cells(letzteZeile - 1, 2)).Cut Destination:=Daten.Cells(5, n)
cu
Chris

Betrifft: AW: Datensatz kopieren+einfügen - Code verinfachen
von: Christian Schilling

Geschrieben am: 23.09.2019 13:24:14
Hallo Christian,
danke dir für die Antwort.
Mit Range hatte ich es anfangs versucht, bin jedoch immer gescheitert bei der
Formulierung des Codes im RangeBereich.
Dank deiner Hilfe bin ich nun wieder schlauer ;-):
Den Rest werde ich mir noch zusammensuchen.
Danke

Excel-Beispiele zum Thema "Datensatz kopieren+einfügen - Code verinfachen"

Doppelte Datensätze löschen download Alle Datensätze >= Eingabewert filtern download
Datensatz nach Eingabe eines Kurzbegriffes download Datensätze nach zwei Kriterien in neues Blatt übernehmen download
Datensätze in zweitem Blatt anders anordnen download Datensätze in UserForm auswählen und im Blatt löschen download
Doppelte Datensätze und Leerzeilen löschen download Alle mehrfach vorkommenden Datensätze in zweiter Tabelle listen download
Doppelte Datensätze farblich markieren und auflisten download Anzahl der durch Autofilter ermittelten Datensätze anzeigen download
Viererblock-Datensätze sortieren download Datenmaske mit einem bestimmten Datensatz aufrufen download
Anzeige eines Datensatzes durch Klick mit der rechten Maustaste download Artikelnummern nach Kriterien suchen und Datensätze kopieren download
Datensatz alle 10 Sekunden gruppenweise eintragen. download Nach TextBoxeingabe Datensätze in UserForm-ListBox übernehmen download
Datensätze unter Maximum ausblenden download Datensätze zählen, die in einigen Spalten identisch sind download
Datensätze, die öfter als 3 mal vorkommen, kopieren download In UserForm-ListBox nur Datensätze gleichen Datums auswählen download
Ermittlung der jeweils letzten 5 Datensätze download Über UserForm-Datensätze nur eintragen, wenn nicht vorhanden download
Datensatz eintragen oder editieren download Datensätze wechselseitig bei Nichtauffinden markieren download
Datensätze mit Minimumwert übernehmen download