Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten in ein anderes Tabellenblatt kopieren VBA

Daten in ein anderes Tabellenblatt kopieren VBA
12.03.2017 09:23:02
mikey20333

Hi,
Könnt ihr mir da bitte weiterhelfen, habe nämlich noch nicht so viel erfahrung mit VBA - aber ich würde gerne Dateien die sich zuvor in einem anderen Tabellenblatt von oben nach unten eingetragen wurden einfach mit einen Button in ein anderes Tabellenblatt
kopieren. Die kopierten Daten sollen jedoch im querformat in jede zelle eingetragen werden. Ich habe hier schon eine beispieldatei und wollte fragen ob die eintragungen im VBA script nicht einfacher programmiert werden können.
https://www.herber.de/bbs/user/112122.xlsm
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in ein anderes Tabellenblatt kopieren VBA
12.03.2017 11:36:07
Werner
Hallo Mikey,
kann mir deine Datei im Moment nicht ansehen aber so z.B.:
Public Sub Kopieren_Transponieren()
Dim loLetzte As Long
Application.ScreenUpdating = False
With Sheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'Spalte A, an deine Verhältnisse anpassen
.Range(.Cells(1, 1), .Cells(loLetzte, 1)).Copy 'kopiert ab A1 bis A letzte -anpassen
Sheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: Daten in ein anderes Tabellenblatt kopieren VBA
12.03.2017 13:27:46
André
Vielen Dank Werner für Deine Hilfe, aber ich wollte eigentlich was anderes...
die Formel mit dem Datum war ja nur eine Änderung von einer festen Eingabe auf eine zellenbezogene
-- von --
WHERE (tbSpulen.Datum Between {ts '2017-02-24 00:00:00'} And {ts '2017-03-02 00:01:00'})
-- auf --
WHERE (tbSpulen.Datum Between {ts '" & Range("M1").Text & "'} And {ts '" & Range("M2").Text & "'})
und genau an so was ähnliches habe ich bei der Basilnummer auch gedacht
-- von --
and tbPaletten.BasilCode in (187135562859690373)
-- auf --
?
Ein Grund, die Datenmengen sind sehr groß und ich will sie durch die Abfrage bereits verringern.
Trotzdem Danke für die schnelle Antwort. Vielleicht hast Du ja hierfür auch eine Lösung?!
Gruß André
Anzeige
AW: Daten in ein anderes Tabellenblatt kopieren VBA
12.03.2017 15:09:30
Werner
Hallo Mikey oder Andre,
ich bin nur nach dem Betreff gegangen. Kann im Moment keine .xlsm downloaden.
Gruß Werner
AW: Daten in ein anderes Tabellenblatt kopieren VBA
13.03.2017 09:27:07
mikey20333
Hi,
danke für die vielen infos, habe nur ein problem das meine Daten nicht immer an derselben stelle
stehen, habe das makro getestet funktioniert super, aber wie passe ich das ganze an wenn ich wie ich dieses makro habe.
Private Sub CommandButton1_Click()
Dim letzte As Long
Dim spalte As Long
Dim i As Long
Dim wksQ As Worksheet
Set wksQ = Worksheets("Eingabe")
i = 0
With Worksheets("Liste").Range("Tabelle1[Datum]")
If .Cells(.Count, 0)  "" Then
i = 1
Worksheets("Liste").ListObjects("Tabelle1").Resize Range("$A$9:$Z$" & 10 + .Count) 'Tabelle  _
erweitern
End If
.Cells(.Count + i, 0) = .Cells(.Count, 0).Value + 1
.Cells(.Count + i, 1).Value = Format(wksQ.Range("C4").Value, "dd.mm.yyyy")
.Cells(.Count + i, 2).Value = wksQ.Range("C6").Value
.Cells(.Count + i, 3).Value = wksQ.Range("C8").Value
.Cells(.Count + i, 4).Value = wksQ.Range("E13").Value
.Cells(.Count + i, 5).Value = wksQ.Range("E14").Value
.Cells(.Count + i, 6).Value = wksQ.Range("E15").Value
.Cells(.Count + i, 7).Value = wksQ.Range("E16").Value
.Cells(.Count + i, 8).Value = wksQ.Range("F13").Value
.Cells(.Count + i, 9).Value = wksQ.Range("F14").Value
.Cells(.Count + i, 10).Value = wksQ.Range("F15").Value
.Cells(.Count + i, 11).Value = wksQ.Range("F16").Value
.Cells(.Count + i, 12).Value = wksQ.Range("F20").Value
.Cells(.Count + i, 13).Value = wksQ.Range("F21").Value
.Cells(.Count + i, 14).Value = wksQ.Range("F22").Value
.Cells(.Count + i, 15).Value = wksQ.Range("F23").Value
.Cells(.Count + i, 16).Value = wksQ.Range("F27").Value
.Cells(.Count + i, 17).Value = wksQ.Range("F28").Value
.Cells(.Count + i, 18).Value = wksQ.Range("F29").Value
.Cells(.Count + i, 19).Value = wksQ.Range("F30").Value
.Cells(.Count + i, 20).Value = wksQ.Range("F31").Value
.Cells(.Count + i, 21).Value = wksQ.Range("F32").Value
.Cells(.Count + i, 22).Value = wksQ.Range("F33").Value
.Cells(.Count + i, 23).Value = wksQ.Range("F34").Value
.Cells(.Count + i, 24).Value = wksQ.Range("F35").Value
End With
End Sub

Anzeige
AW: Daten in ein anderes Tabellenblatt kopieren VBA
13.03.2017 18:36:16
mikey20333
Hi,
Anbei die neue Beispieldatei, könnt ihr mir da weiterhelfen wegen der summewenns funktion.
Warum werden die werte in der Registerkarte- Übersicht nicht
in der Zelle addiert sondern ich bekomme immer den wert 0 heraus.
https://www.herber.de/bbs/user/112155.xlsm
Anzeige
AW: Daten in ein anderes Tabellenblatt kopieren VBA
13.03.2017 20:36:25
mikey20333
hab die lösung wegen der formel glaub ich gefunden, wenn in der spalte liste in der spalte datum nur das datum ohne uhrzeit in derselben spalte steht funktioniert die formel nicht, wenn ich aber eine uhrzeit dazuschreibe funktioniert es wieder und er zählt.
nun habe ich das 2te problem, das ich nicht genau weiterweiß ob ich die summewenn abfrage ändern soll oder es einfacher wäre in Excel mit makro datum und uhrzeit in eine Zelle zu schreiben.
könnt ihr mir da weiterhelfen, danke im voraus
Anzeige
AW: Daten in ein anderes Tabellenblatt kopieren VBA
13.03.2017 21:45:44
mikey20333
hi, bin immer noch am selben problem es hat anscheinend mit der =summewenns und dem datumsformat zu tun
wenn ich die kalendereinträge manuell auf chinesisch / taiwan formatiere
bekomme ich die richtigen daten angezeigt, kann das stimmen?
AW: Daten in ein anderes Tabellenblatt kopieren VBA
15.03.2017 11:05:43
Werner
Hallo Mikey,
zwei Sachen:
1. Deine SUMMEWENNS-Formel ist falsch, achte auf die "Gänsefüsschen". Die Vergleichsoperatoren müssen in
Gänsefüsschen stehen.
=SUMMEWENNS(Liste!$E$10:$E$1048576;Liste!B$10:B$1048576;">="&$C$4;Liste!B$10:B$1048576;" 2. In deiner Tabelle "Liste" in Spalte B steht kein Datum sondern Text.
mit:

.Cells(.Count + i, 1).Value = Format(wksQ.Range("C4").Value, "dd.mm.yyyy")

übergibst du Text in die Zelle und kein Datum
Formatier deine Spalte B im Blatt "Liste" im Format Datum und übergib die Werte so:

.Cells(.Count + i, 1).Value = CDate(wksQ.Range("C4").Value)
Um bereits vorhandene Daten in Spalte B Tabelle "Liste" in Zahlenwerte umzuwandeln gehe bitte folgendermaßen vor:
Schreibe eine 1 in eine freie Zelle - kopiere diese Zelle - markiere den Bereich in Spalte B den du in Zahlenwerte umwandeln willst - Menü Start - klicke beim Icon oben links (Einfügen") den Pfeil - dann klicke ganz unten den Punkt "Inhalte einfügen.." - wähle Multiplizieren und dann ok. So werden deine "Textzahlen" in echte Zahlen umgewandelt. Jetzt noch die Spalte B im Format Datum formatieren und fertig.
Gruß Werner
Anzeige
AW: Daten in ein anderes Tabellenblatt kopieren VBA
15.03.2017 16:13:32
mikey20333
Hi,
super danke werde das gleich austesten, jedoch habe ich auch in der zwischenzeit das datumsformat geändert und was soll ich sagen es funktioniert, kannst du mir erklären warum, habe die formel und das datumsformat nur aus einer alten Datei übernommen. Bin ja VBA Anfänger und kenne mich noch nicht so
gut in der Materie aus.
anbei die neue Datei
https://www.herber.de/bbs/user/112211.xlsm
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten in ein anderes Tabellenblatt kopieren mit VBA


Schritt-für-Schritt-Anleitung

Um Daten in ein anderes Tabellenblatt zu kopieren, kannst du ein einfaches VBA-Skript verwenden. Hier ist eine Schritt-für-Schritt-Anleitung für das Kopieren und Einfügen von Daten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Public Sub Kopieren_Transponieren()
       Dim loLetzte As Long
       Application.ScreenUpdating = False
       With Sheets("Tabelle1")
           loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row ' Anpassung je nach Bedarf
           .Range(.Cells(1, 1), .Cells(loLetzte, 1)).Copy ' Kopiert Spalte A
           Sheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
           False, Transpose:=True ' Transponiert die Daten
       End With
       Application.CutCopyMode = False
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Füge einen Button ein: Gehe zu Entwicklertools > Einfügen > Button (Formsteuerung).

  6. Weise das Makro zu, indem du mit der rechten Maustaste auf den Button klickst und Makro zuweisen wählst. Wähle Kopieren_Transponieren aus der Liste.

Jetzt kannst du durch einen Klick auf den Button Daten von "Tabelle1" nach "Tabelle2" kopieren.


Häufige Fehler und Lösungen

  • Fehler bei der Datenübertragung: Stelle sicher, dass die Tabellennamen korrekt sind. Ein Tippfehler kann dazu führen, dass das Makro nicht funktioniert.
  • Formatierungsprobleme: Wenn die Daten nicht korrekt angezeigt werden, überprüfe die Formatierungen in beiden Tabellen. Manchmal kann es nötig sein, das Format zu ändern, um die Werte richtig darzustellen.
  • Daten nicht gefunden: Wenn dein Makro nicht alle Daten kopiert, überprüfe, ob die Daten in der richtigen Spalte stehen. Passe den Code entsprechend an.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, um Daten in ein anderes Tabellenblatt zu kopieren:

  1. Manuelles Kopieren und Einfügen: Du kannst die Daten einfach kopieren und in das andere Blatt einfügen. Dies ist jedoch zeitaufwändig, besonders bei großen Datenmengen.

  2. Verwenden von Formeln: Mit Formeln wie =Tabelle1!A1 kannst du Daten aus einem anderen Blatt übernehmen. Diese Methode ist ideal, wenn du die Daten dynamisch aktualisieren möchtest.

  3. Power Query: Wenn du regelmäßig Daten aus einer Tabelle in eine andere übertragen musst, könnte Power Query eine geeignete Lösung sein. Damit kannst du Daten automatisch laden und transformieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du VBA nutzen kannst, um verschiedene Daten zu kopieren:

  • Kopieren von Zeilen: Du kannst spezifische Zeilen basierend auf Bedingungen kopieren. Ein Beispiel:

    Dim zeile As Long
    For zeile = 1 To 10 ' Beispiel für die ersten 10 Zeilen
       If Sheets("Tabelle1").Cells(zeile, 1).Value <> "" Then
           Sheets("Tabelle2").Cells(zeile, 1).Value = Sheets("Tabelle1").Cells(zeile, 1).Value
       End If
    Next zeile
  • Automatisches Kopieren von Daten: Du kannst einen Button erstellen, der beim Klicken Daten von mehreren Zellen automatisch in ein anderes Tabellenblatt überträgt.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft, Variablen zu deklarieren und Fehler zu vermeiden.
  • Optimiere die Leistung: Deaktiviere Application.ScreenUpdating während der Ausführung des Makros, um die Leistung zu steigern.
  • Fehlerbehandlung einfügen: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler zu behandeln und das Makro robuster zu machen.
  • Dokumentiere deinen Code: Schreibe Kommentare im Code, um die Funktionalität zu erklären – das hilft dir und anderen, die den Code später lesen.

FAQ: Häufige Fragen

1. Wie kann ich einen Button erstellen, um das Makro auszuführen?
Du kannst einen Button in Excel einfügen, indem du zu Entwicklertools gehst, auf Einfügen klickst und den Button auswählst. Weise dann das Makro zu.

2. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten aktuellen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Excel 365.

3. Was mache ich, wenn mein Makro nicht funktioniert?
Überprüfe die Tabellennamen, die Codierung und mögliche Fehler im Code. Du kannst auch den Debugger verwenden, um das Problem zu identifizieren.

4. Wie kann ich nur bestimmte Daten kopieren?
Du kannst Bedingungen in deinem VBA-Code hinzufügen, um nur die relevanten Daten zu kopieren, z.B. wenn eine Zelle einen bestimmten Wert hat.

5. Kann ich Daten automatisiert übertragen?
Ja, du kannst das Makro so programmieren, dass es zu bestimmten Zeiten oder bei bestimmten Ereignissen automatisch ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige