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

Forumthread: Daten von Tabelle1 in die Tabelle 2 kopieren

Daten von Tabelle1 in die Tabelle 2 kopieren
12.02.2005 16:51:49
Tabelle1
Hallo,
VBA ist ein mächtiges Ding aber mir fehlt hier einfach
noch das nötige Wissen. Kann mir einer hierbei bitte helfen.
Ich habe ein Tabellenbeispiel auf den Server geladen,
mit welchem man Daten von Tabelleblatt Quelle in das
Tabellenblatt Ziel kopieren kann, sobald eine Menge eingegeben wurde.
Hier werden die ganzen Zeilen kopiert. Wie kann man den VBA-Code so ändern,
dass die entsprechend Zeilen nur von Spalte A bis E kopiert werden.
Bei jedem kopieren werden die Daten unter dem bereits bestehenden Datensatz kopiert bzw. drangehängt. Wie erreicht man es, dass bei jedem kopieren der kopierte Datensatz im Tabellenblatt Ziel überschrieben wird?
https://www.herber.de/bbs/user/17932.xls
Bitte Danke
Gruß Markus
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten von Tabelle1 in die Tabelle 2 kopieren
Tabelle1
Hallo Markus,
setze diese Zeile unter der letzten Set Anweisung
und so müsste es funktionieren.
wksZ.Range("A2:E65536").Clear
Gruß
Kay
AW: Daten von Tabelle1 in die Tabelle 2 kopieren
12.02.2005 19:28:47
Tabelle1
Hallo Kay,
sorry, ich kann das nicht so gut. In welcher Zeile wird der Code eingefügt?

Sub SuchenUndKopieren()
Dim wksQ As Worksheet   'Preisliste-Tabelle
Dim wksZ As Worksheet   'Angebot-Tabelle
Dim rng As Range
Dim lngQ As Long
Dim lngz As Long
Set wksQ = Sheets("Preisliste")
Set wksZ = Sheets("Angebot")
lngQ = wksQ.Range("E65536").End(xlUp).Row
lngz = wksZ.Range("A65536").End(xlUp).Row + 8
For Each rng In wksQ.Range(wksQ.Cells(1, 2), wksQ.Cells(lngQ, 2))
If rng.Value > 0 Then
rng.EntireRow.Copy wksZ.Cells(lngz, 1)
lngz = lngz + 1
End If
Next
End Sub

Und wie geht das mit dem Kopieren der Zeile aber nur Spalte A bis E.
Danke
Gruß Martin
Anzeige
AW: Daten von Tabelle1 in die Tabelle 2 kopieren
Tabelle1
Hi,

Sub SuchenUndKopieren()
Dim wksQ As Worksheet   'Preisliste-Tabelle
Dim wksZ As Worksheet   'Angebot-Tabelle
Dim rng As Range
Dim lngQ As Long
Dim lngz As Long
Set wksQ = Sheets("Preisliste")
Set wksZ = Sheets("Angebot")
wksZ.Range("A2:E65536").Clear
lngQ = wksQ.Range("E65536").End(xlUp).Row
lngz = wksZ.Range("A65536").End(xlUp).Row + 8
For Each rng In wksQ.Range(wksQ.Cells(1, 2), wksQ.Cells(lngQ, 2))
If rng.Value > 0 Then
rng.EntireRow.Copy wksZ.Cells(lngz, 1)
lngz = lngz + 1
End If
Next
End Sub

diese Codezeile Löscht nur den alten Bereich
Das mit Spalte A bis E verstehe ich nicht ganz?
Es wird doch A bis E Kopiert,aber nur wenn etwas in E steht.
Kay
Anzeige
AW: Daten von Tabelle1 in die Tabelle 2 kopieren
Tabelle1
Hi,
alles klar, funktioniert perfekt.
Danke
Gruß Martin
;

Forumthreads zu verwandten Themen

Anzeige
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 von Tabelle1 in Tabelle 2 kopieren


Schritt-für-Schritt-Anleitung

Um Daten von „Tabelle1“ in „Tabelle2“ zu kopieren, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

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

  2. Erstelle ein neues Modul:

    • Klicke auf „Einfügen“ und wähle „Modul“.
  3. Füge den folgenden Code ein:

    Sub SuchenUndKopieren()
       Dim wksQ As Worksheet   'Preisliste-Tabelle
       Dim wksZ As Worksheet   'Angebot-Tabelle
       Dim rng As Range
       Dim lngQ As Long
       Dim lngz As Long
    
       Set wksQ = Sheets("Preisliste")
       Set wksZ = Sheets("Angebot")
    
       ' Alte Daten löschen
       wksZ.Range("A2:E65536").Clear
    
       lngQ = wksQ.Range("E65536").End(xlUp).Row
       lngz = wksZ.Range("A65536").End(xlUp).Row + 8
    
       For Each rng In wksQ.Range(wksQ.Cells(1, 2), wksQ.Cells(lngQ, 2))
           If rng.Value > 0 Then
               rng.EntireRow.Copy wksZ.Cells(lngz, 1)
               lngz = lngz + 1
           End If
       Next
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus über ALT + F8, wähle „SuchenUndKopieren“ und klicke auf „Ausführen“.

Damit werden die Daten von „Tabelle1“ in „Tabelle2“ kopiert und die alten Daten in den Spalten A bis E gelöscht.


Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range"

    • Lösung: Stelle sicher, dass die Blattnamen „Preisliste“ und „Angebot“ korrekt sind.
  • Fehler: Daten werden nicht gelöscht

    • Lösung: Vergewissere Dich, dass die Zeile wksZ.Range("A2:E65536").Clear im Code vorhanden ist, um alte Daten zu löschen.
  • Fehler: Nur Spalte A bis E wird nicht kopiert

    • Lösung: Der Code kopiert nur die gesamte Zeile, wenn in Spalte B (2. Spalte) ein Wert steht. Ändere rng.EntireRow.Copy in wksZ.Cells(lngz, 1).Resize(1, 5).Value = rng.Resize(1, 5).Value, um nur die Spalten A bis E zu übertragen.

Alternative Methoden

Eine alternative Methode, um Daten von „Tabelle1“ in „Tabelle2“ zu übertragen, besteht in der Nutzung von Excel-Formeln oder Power Query. Hierbei kannst Du:

  • Power Query verwenden, um Daten zu importieren und zu transformieren.
  • Formeln wie =Tabelle1!A1 verwenden, um Daten dynamisch zu verknüpfen.

Praktische Beispiele

Angenommen, Du hast in „Tabelle1“ folgende Daten:

A B C D E
ID Name Preis Menge Status
1 Produkt1 10 5 Vorhanden
2 Produkt2 15 0 Ausverkauft

Wenn Du den VBA-Code ausführst, werden nur die Daten von „Produkt1“ in „Tabelle2“ kopiert, da die Menge größer als 0 ist.


Tipps für Profis

  • Verwende Error Handling im VBA-Code, um Fehler abzufangen und besser zu diagnostizieren.
  • Optimiere Deine Makros, um die Laufzeit zu verkürzen, indem Du Application.ScreenUpdating = False am Anfang und Application.ScreenUpdating = True am Ende des Codes hinzufügst.
  • Nutze Benutzerdefinierte Funktionen, um komplexere Datenübertragungen zu realisieren.

FAQ: Häufige Fragen

1. Wie kann ich die Zeilenanzahl anpassen? Du kannst die Zeilenanzahl ändern, indem Du den Bereich in wksZ.Range("A2:E65536") auf eine kleinere Zahl anpasst, z.B. wksZ.Range("A2:E100").

2. Ist der Code auch für andere Excel-Versionen geeignet? Ja, der VBA-Code funktioniert in den meisten modernen Excel-Versionen (2010 und höher). Stelle sicher, dass Du die richtigen Blattnamen verwendest.

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