Office: Zellbereich in anderes Tabellenblatt kopieren

Helfe beim Thema Zellbereich in anderes Tabellenblatt kopieren in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, leider bin ich mit der Suche nicht wirklich fündig geworden. Ich möchte aus einer Tabelle im Tabellenblatt „Tabelle1“ Einträge aus... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von PeerT, 29. November 2020.

  1. Zellbereich in anderes Tabellenblatt kopieren


    Hallo zusammen,

    leider bin ich mit der Suche nicht wirklich fündig geworden.

    Ich möchte aus einer Tabelle im Tabellenblatt „Tabelle1“ Einträge aus einem Spaltenbereich (G5 bis G25) mit einem Button in ein anderes Tabellenblatt (Tabelle2) kopieren. Die Formatierung muss nicht berücksichtigt werden, da die Gesamtliste nur eine Hilfstabelle für ein Diagramm ist.

    Die Einträge in Tabelle1 werden monatlich überschrieben und die Datei dann unter einem anderen Namen gespeichert. In „Tabelle2“ möchte ich somit eine fortlaufende Aufzählung als Jahresübersicht erstellen.

    Ich habe mich mal schrittweise an das Thema herangewagt und einen funktionierenden Code für eine einzelne Zelle (G5) hinbekommen:

    Code:
    Leider habe ich es bis jetzt nicht hinbekommen, den Code soweit abzuändern, dass die Daten aus dem oben genannten Bereich komplett kopiert werden.

    Zusätzlich sollte dann noch die Bedingung erfüllt sein, dass nur die gefüllten Zellen kopiert werden und die leeren Zellen nicht.

    Was mich auf der Suche nach einer Lösung extrem verwirrt ist auch der Umstand, dass es anscheinend sehr unterschiedliche (Code)-Ansätze gibt, Daten zu kopieren. Das macht die Sache für einen VBA-Neuling nicht gerade einfacher.

    Für einen Zeilenbereich (J27 bis O27), wo es keine leeren Zellen gibt, habe ich es übrigens auch nicht hinbekommen. *rolleyes.gif*

    Ich wäre für Eure Unterstützung sehr dankbar.

    :)
     
  2. Moin PeerT,

    ein Demofile wäre doch jetzt praktisch.
     
  3. Anbei eine Beispieldatei mit irgendwelchen Daten
     
  4. Zellbereich in anderes Tabellenblatt kopieren

    barbara_w, 3. Dezember 2020
    #4
  5. Wie geht es Deinem Problem mit dem Kopieren? Offensichtlich kannst Du mit meinem Tip nichts anfangen, weil Du nicht antwortest.

    Hier habe ich ein Makro für Dich ausgedacht, das alle befüllten Zellen ab G5 abwärts und die Nachbarspalte in das andere Blatt in C4 abwärts kopiert.
    Code:
    Hilft das?

    LGB
     
    barbara_w, 9. Dezember 2020
    #5
  6. Hallo barbara_w,

    sorry, dass ich mich nicht gemeldet habe, aber der Frust sitzt tief. Deshalb habe ich auch ein paar Tage Abstand von dem Thema genommen.

    Deinen ersten Link habe ich mir auch schon angesehen und die Beispiele sehen - auch ohne tiefgreifende Englischkenntnisse - vielversprechend aus.
    Das erst Code-Beispiel habe ich auch schon ausprobiert, der auch funktioniert.

    Ich hatte zwischenzeitlich auch einen Code aus mehreren Beispielen, die ich im Internet gefunden habe, zusammengebastelt, der mit einer For/Next-Schleife nur gefüllte Zellen aus einem Bereich kopiert und in ein anderes Tabellenblatt wieder eingefügt hat.
    Allerdings nicht untereinander. Die kopierten Werte wurden nacheinander in nur eine Zielzelle geschrieben (die kopierten Tabelleneinträge wurden als immer wieder überschrieben, so dass nur noch der letzten Eintrag sichtbar war).

    Da ich immer zwischen Originaldatei, einer weiteren Testdatei und der hier angehängten Datei hin- und herspringen muss, habe ich mir leider den ein und anderen Code zerschossen. Hatte mal mehrere Dateien gleichzeitig auf und nicht gesehen, wo ich Änderungen vorgenommen habe.
    Von daher kann ich jetzt wieder von vorne anfangen.

    Ich probiere Deinen Vorschlag gleich mal aus.
     
  7. So, da bin ich noch mal.

    Habe den Code mit der Schleife wieder hinbekommen und war doch schon so weit, ähnlich wie Dein Code. Der Code kopiert nur die Zellen des Bereiches G5 bis G25, die auch befüllt sind und schreibt diese dann untereinander.

    Allerdings habe ich keine Ahnung, warum der Code-Teil bei meinem Button in Blatt "Tabelle3" ignoriert wird, der eigentlich dafür sorgen soll, dass bei erneutem Drücken des Button die Daten unter die vorhandenen Einträge geschrieben werden sollen:

    Code:
    Bei meinem Code werden die schon vorhandenen Daten immer wieder überschrieben, aber es soll ja eine fortlaufende Liste werden, die monatlich "anwächst".
     
  8. Zellbereich in anderes Tabellenblatt kopieren

    Hi PeerT

    warum willst Du denn nicht bei Erreichen einer leeren Zelle die For i-Schleife mit "Exit For" abbrechen? Du bist ja fertig. Dieser Abbruch kann gleich zu Beginn der For-Schleife stehen und sieht so aus:
    If Worksheets("Tabelle1").Range("G" & i) = "" Then Exit For

    Warum die drei Codezeilen, die du gepostet hast, "ignoriert" werden? Sie setzen bei Zutreffen einer bestimmten Bedingung den Fokus auf die Zelle Range("A1").End(xlDown). Aber sie kopieren nichts und fügen auch nichts ein. Sie werden also nicht ignoriert.

    Erst danach wird mit PasteSpecial in A2 abwärts, eingefügt. Egal, welches Blatt oder welche Zelle gerade aktiv ist. Womit gezeigt wird, dass das Selektieren hier keine Bedeutung hat. Zum Kopieren und Einfügen sprichst Du bestimmte zellen an und nicht, was gerade selected ist. Alle Zeilen mit Select kannst Du rausnehmen. Sicher, sie helfen beim schrittweise Durchwandern des Codes, zu überprüfen, ob auch wirklich die gewünschte Zelle angesprochen wird. Aber dann kannst Du sie rausnehmen.


    Noch ein Wort zu .Range("A1").End(xlDown). Das entspricht der Tastenkombination Strg+Pfeil runter, wenn man in A1 steht.

    Man kommt in die erste leere Zelle oder Achtung!:, falls A2 leer ist, in die allerletzte Zelle der Spalten A. Daher ist diese Methode nicht immer zielführend.

    Man kann aber die letzte freie Zelle auch durch Rückwärtssuche in Spalte A finden:
    Worksheets("Tabelle3").Columns("A").Find(What:="*", SearchDirection:=xlPrevious).Select
    Funktioniert bei belegter oder leerer A2 gleichermaßen. Allerdings darf da A1 nicht leer sein.

    Wenn Du nun Select durch
    offset(1).PasteSpecial Paste:=xlPasteValues
    ersetzt, hast Du den passenden Einfügebefehl.

    Dein fertige Code sollte dann so aussehen:
    Code:
    Alle Zellen von 5 abwärts werden übertragen, bis zur ersten leeren Zelle, aber höchstens bis Zelle 25. Die Zelle wird dann im anderen Blatt in Spalte A unten eingefügt.

    Mein gestern geschriebener Code macht das in einem Befehl für den ganzen Bereich.

    Hoffe, Dein Frust ist nun durch Freude verdrängt und wünsche gute Unterhaltung beim Ausprobieren.

    Noch ein Tipp: Mit "Ansicht, Neues Fenster, Alle anordnen, Unterteilt, OK" bekommt man die Datei in 2 Fenstern nebeneinander zu sehen, in denen man dann verschidene Blattansichten anzeigen kann. Also 2 Blätter zugleich nebeneinander sehen. Das macht die Sache einfacher.

    LGB
     
    barbara_w, 10. Dezember 2020
    #8
  9. Hallo barbara_w,

    erst mal vielen Dank, dass Du mir behilflich bist.
    Es ist schon erstaunlich, mit wie wenig VBA-Geschreibsel man eine Lösung erzielen kann.

    Dein neuer Code funktioniert natürlich einwandfrei und erfüllt (fast) meine Vorstellungen.

    Grundsätzlich hatte ich die Überlegung vorab angestellt, den Bereich G5 bis G25 abzusuchen, um dann die gefüllten Zellen zu kopieren. Ich habe die Schleife mit Erreichen der ersten leeren Zelle nicht abgebrochen, damit auch Einträge kopiert werden, wenn versehentlich eine Zeile/Zelle nicht befüllt wurde.

    Die drei Code-Zeilen, die ich in einem Tutorial gefunden habe, hatte ich für mich so interpretiert:

    Unter Berücksichtigung einer Spaltenüberschrift soll in der Spalte A, ausgehend von Zelle A1, die letzte befüllte Zelle gesucht werden (über: .Range("A1").End(xlDown).), um ab der nächsten Zelle, die dann leer ist, die kopierten Werte einzufügen. Die nächste Zelle wird mit ".Offset(1, 0)“ angesteuert.

    Mit dem Code für eine einzelne Zelle hat dies ja prima funktioniert.

    Wahrscheinlich habe ich es aber noch nicht so richtig verstanden.

    Mit Deinen Hinweisen zu meiner Suchweise ist mir jetzt zumindest klar geworden, warum ich im Web fast überwiegend die Rückwärtssuche gefunden habe.

    Ich will gar nicht mehr an meinem Code groß rumbasteln. Es würde mich aber interessieren, ob man durch eine andere Positionierung der drei Code-Zeilen in meinem Gesamtcode auch zu einer Lösung kommen kann. Ich habe da schon einiges ausprobiert, jedoch ohne Erfolg.
    Ein einfaches Ja oder Nein, ohne Code, würde mir genügen. *wink.gif*
     
  10. Hi

    Mit "angesteuert" meinst Du offensichtlich das ".Select". Man muss aber nicht erst ansteuern und dann das Ausgewählte durchführen. Das Select verzögert den Ablauf und hat keinen direkten Nutzen für die Absicht.

    Deine letzte Frage kann ich nicht beantworten, weil ich sie nicht verstehe. Bitte um eine konkrete Frage.

    Wenn Du G5 bis G25 ohne Leerzeilen kopieren willst, dann gibt es folgende Möglichkeiten:

    Überprüfe in der Schleife jede Zelle auf Nichtleer.
    Code:
    Oder: Ohne Schleife.
    Von diesem Bereich "G5:G25" werden alle Zellen mit konkreten Einträgen (keine Formeln) im anderen Blatt, Spalte A, angehängt.
    Code:
    Voraussetzung: Es gibt in G5:G25 mindestens eine beschriebene Zelle. Denn sonst gäbe es nichts zu kopieren und liefert eine Unerbrechung wegen Fehler. Wenn Du das nicht sicher weisst, nimm lieber den oberen Code.

    LGB
     
    barbara_w, 11. Dezember 2020
    #10
  11. Hi,

    der erste Code geht ja doch wieder ein bisschen in die Richtung von dem Code, wie ich ihn mal ausprobiert hatte.

    Werde ich am Montag direkt ausprobieren und mich dann melden.

    Die Frage in dem letzten Absatz hat sich erledigt.

    Vielen Dank.

    Ich wünsche Dir schon mal ein schönes Wochenende.
     
  12. Hi,

    ich habe ein ähnliches Problem. Möchte einen Zellenbereich einer Arbeitsmappe in eine andere Arbeitsmappe kopieren

    Workbooks("C:/Users/User/DesktopProjekt berufliche Fortbildung/Excel und VBA/VBA Programmierung/Projekt 1/Quelle.xlsx").Worksheets("Quelle").Range("A1:y100").Copy
    Destination:=Workbooks("C:Users/UserDesktop/Projekt berufliche Fortbildung/Excel und VBA/VBA Programmierung/Projekt 1/Zielfile.xlsm").Worksheets("SR Quelle").Range("A2:Y101")

    Ich kriege ständig den Laufzeitenfehler angezeigt und ich komme nicht darauf, wo der Fehler liegt. Habe schon die Zielrange geändert - keine Wirkung.

    Wisst Ihr Rat?

    LG
     
    Matthias1982R, 11. Dezember 2020
    #12
  13. Zellbereich in anderes Tabellenblatt kopieren

    Hallo Matthias1982R,

    ich kann Dir da leider gar nicht helfen. Vielleicht ergibt sich eine Lösung für Dich bei den weiteren Schritten.


    Hallo barbara_w,

    mit der Überprüfung in der Schleife, ob jede Zelle nicht leer ist, und dem dazugehörigen Code klappt es jetzt wunderbar.

    Was mir am Anfang gar nicht aufgefallen ist – da ich die Spalte H im Tabellenblatt 1 bisher nicht ausgefüllt hatte – war, dass der erste Code aus Post #5 diesen Bereich auch mit kopiert.

    Ich habe die Ausgangstabelle nun erweitert und den Code entsprechend abgeändert (die Ziffer 2 durch eine 5 ersetzt), damit alle 5 Spalten (G bis K) kopiert werden.

    Anschließend habe ich versucht, diesen Code in den zuletzt funktionierenden Schleifen-Code (der erste Code aus Post #10) einzubinden, um die bisherige Logik von einer Spalte auf mehrere Spalten zu erweitern.

    Der Code sieht jetzt folgendermaßen aus:

    Code:
    Funktioniert natürlich nicht wie es soll. Die Daten werden zwar entsprechend in das Tabellenblatt 4 kopiert. Allerdings wieder nur die Daten bis zur ersten Leerzeile. Die restlichen Daten werden nicht kopiert. Bei erneutem Drücken des Buttons auf dem Tabellenblatt 4 werden die Daten auch wieder überschrieben anstatt diese wieder unten dranzuhängen.

    Ich hatte mir überlegt, dass der Zeilenbereich kopiert wird, wenn die Zellen G5 bis G25 nicht leer sind. Die Spalten H bis K sind immer befüllt, wenn G befüllt ist.

    Kannst Du mir noch mal einen Tipp geben, wo der Fehler liegen könnte?
    Die überarbeitete Datei habe ich angehängt.
     
  14. Erstelle einen eigenen Thread, dann schauen wir weiter.
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  15. Hi PeerT

    nachdem du diesen einen Code erstellt hast, wundert es mich, dass Du nicht weisst, warum er nicht funktioniert.

    Es sei denn, Du hast irgendwas zusammenkopiert, ohne zu wissen, was. Du solltest deinen Code schrittweise durchlaufen und dabei alle Befehle verstehen und alle Variablen beobachten.

    Du hast gleich einen ganzen Block kopiert. Dafür brauchst Du keine For-Schleife ("For i = 5 To 25") , weil Du ja alles in einem Block machst.

    Probier es man damit:
    Code:
    LGB
     
    barbara_w, 14. Dezember 2020
    #15
Thema:

Zellbereich in anderes Tabellenblatt kopieren

Die Seite wird geladen...
  1. Zellbereich in anderes Tabellenblatt kopieren - Similar Threads - Zellbereich Tabellenblatt kopieren

  2. Zellbereich kopieren / schreiben

    in Microsoft Excel Hilfe
    Zellbereich kopieren / schreiben: Moin zusammen, leider muss ich noch einmal vorstellig werden und hoffe auf Eure Unterstützung! Ich habe in Excel mehrere Tabellen mit Makro und möchte aus einer/mehreren Zellen die Daten (Datum)...
  3. Zellbereich überwachen und bei Änderung andere Zelle um 1 erhöhen

    in Microsoft Excel Hilfe
    Zellbereich überwachen und bei Änderung andere Zelle um 1 erhöhen: Hi Bräuchte mal wieder eure Hilfe. Ich möchte per Fomularsteuerelement ein Makro starten und stoppen. Dieses Makro soll dann einen Zellbereich überwachen (J3:J1000). Wenn sich im Zellbereich...
  4. Referenz-Zellbereich um eine Spalte nach Rechts verschieben

    in Microsoft Excel Hilfe
    Referenz-Zellbereich um eine Spalte nach Rechts verschieben: Hallo zusammen, ich bin neu hier in diesem Forum und hoffe auf ein gutes Miteinander und viele ertragreiche Diskussionen! Ich stehe gerade vor einem Excel-Problem und vllt hat ja jemand eine...
  5. Farbe von Zellbereichen prüfen und andere Zelle färben

    in Microsoft Excel Hilfe
    Farbe von Zellbereichen prüfen und andere Zelle färben: Hallo zusammen, ich möchte in Excel mittels VBA eine Funktion realisieren und bräuchte dazu etwas Hilfe. Ich habe ein Tabellenblatt X, in dem sich Zellen in Abhängigkeit von eingetragenen Zahlen...
  6. Kleinster Wert im Zellbereich

    in Microsoft Excel Hilfe
    Kleinster Wert im Zellbereich: Hallo Gemeinde, ich benutze Office 2013. Ich habe mir eine Tabelle angelegt: Blatt 1 Preise Müller Blatt 2 Preise Maier Blatt 3 Preise Moritz Blatt 4 Vergleich via WENNFEHLER--> SVERWEIS...
  7. Zellbereiche leeren bei Eingabe eines Wertes in eine Zelle

    in Microsoft Excel Hilfe
    Zellbereiche leeren bei Eingabe eines Wertes in eine Zelle: Hallo, ich habe eine Exceldatei mit mehreren Tabellenblätern, die alle gleich aufgebaut sind. Nun möchte ich wiederum in einem anderen Tabellenblatt, wenn ich dort einen Wert eingebe, damit...
  8. Zellbereiche verschiedener Tabellenblätter zusammenfügen

    in Microsoft Excel Hilfe
    Zellbereiche verschiedener Tabellenblätter zusammenfügen: Zunächst ein freundliches Hallo an das Board und die User. Beim Lesen der Anfragen fiel mir auf, wie zuvorkommend und schnell die vorgetragenen Probleme gelöst werden. Dafür schon einmal ein...