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

Eintrag in nächste freie Zeile

Forumthread: Eintrag in nächste freie Zeile

Eintrag in nächste freie Zeile
12.11.2022 11:17:48
Kjetil
Hallo, ich bin etwas planlos.
Ich möchte einzelne Zellen (nicht zusammenhängend) in ein anderes Tabellenblatt kopieren. Die Zellwerte werden zum Teil durch Formeln ermittelt, zum Teil manuell eingetragen. Im neuen Tabellenblatt sollen nur die Werte erscheinen. Die Werte sollen dann in die nächste freie Zeile kopiert werden, wobei jedoch die ersten drei Spalten bereits mit Formeln belegt sind. Nachdem die Werte eingefügt sind, sollen die in der Ausgangstabelle manuell eingetragenen Werte gelöscht werde.
Bsp: Ausgangstabelle: C1, E1, G1, C8, E8, G8 usw.
nach Zieltabelle: C1 nach D2, E1 nach E2, G1 nach F2, C8 nach G2 usw.
Gruß,
Kjetil
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Probiers mal in XLWeb
12.11.2022 11:54:57
lupo1
Tabelle2!C1: =INDEX(SPALTENWAHL(C:G;{1.3.5});SEQUENZ(99;;1;7);SEQUENZ(;3))
Korrektur: Tabelle1!C:G statt nur C:G
12.11.2022 11:55:58
lupo1
Achso, in nur eine Zeile
12.11.2022 12:02:48
lupo1
Tabelle2!D2: {=ZUZEILE(INDEX(Tabelle1!C:G;ZEILE(1:99)*7-6;{1.3.5}))}
Anzeige
AW: Eintrag in nächste freie Zeile
12.11.2022 12:02:20
GerdL
Moin Kjetil!

Sub Unit()
Dim Bereich As Range
Dim Ausgangstabelle As Worksheet: Set Ausgangstabelle = Worksheets("Tabelle1") 'anpassen
Dim Zieltabelle As Worksheet: Set Zieltabelle = Worksheets("Tabelle2") 'anpassen
For Each Bereich In Ausgangstabelle.Range("C1:C1,E1:E1,G1:G1,C8:C8,E8:E8,G8:G8").Areas
Call Bereich.Copy
Call Zieltabelle.Cells(2, Application.Max(4, Zieltabelle.Cells(2, Columns.Count).End(xlToLeft).Column) + 1). _
PasteSpecial(Paste:=xlPasteValues)
Next
Application.CutCopyMode = False
End Sub
Gruß Gerd
Anzeige
AW: Eintrag in nächste freie Zeile
12.11.2022 12:26:04
Kjetil
Erstmal Danke Gerd,
die Lösung trifft es nicht ganz. Das Kopieren funktioniert soweit ganz gut. Wenn das Makro auf einen Button lege, werden die neuen Daten jedoch nicht erneut in eine Zeile kopiert, sondern in der gleichen Zeile, wie zu vor, einfach angefügt.
Gruß,
Kjetil
AW: Eintrag in nächste freie Zeile
12.11.2022 12:53:04
GerdL
Willst du jweils in die nächtse freie Zeile in Spalte D der Zieltabelle kopieren, Kjetil?

Sub Unit2()
Dim Bereich As Range
Dim Zeile_Ziel As Long
Dim Ausgangstabelle As Worksheet: Set Ausgangstabelle = Worksheets("Tabelle1") 'anpassen
Dim Zieltabelle As Worksheet: Set Zieltabelle = Worksheets("Tabelle2") 'anpassen
zeileZiel = Zieltabelle.Cells(Zieltabelle.Rows.Count, 4).End(xlUp).Offset(1).Row
For Each Bereich In Ausgangstabelle.Range("C1:C1,E1:E1,G1:G1,C8:C8,E8:E8,G8:G8").Areas
Call Bereich.Copy
Call Zieltabelle.Cells(zeileZiel, Application.Max(4, Zieltabelle.Cells(zeileZiel, Columns.Count). _
End(xlToLeft).Column) + 1).PasteSpecial(Paste:=xlPasteValues)
Next
Application.CutCopyMode = False
End Sub
Gruß Gerd
Anzeige
AW: Eintrag in nächste freie Zeile
12.11.2022 13:18:18
Kjetil
Genau das möchte ich.
;
Anzeige
Anzeige

Infobox / Tutorial

Eintrag in die nächste freie Zeile in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und stelle sicher, dass du zwei Tabellenblätter hast: Tabelle1 für die Ausgangsdaten und Tabelle2 für die Zieldaten.

  2. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub Unit2()
       Dim Bereich As Range
       Dim zeileZiel As Long
       Dim Ausgangstabelle As Worksheet: Set Ausgangstabelle = Worksheets("Tabelle1") 'anpassen
       Dim Zieltabelle As Worksheet: Set Zieltabelle = Worksheets("Tabelle2") 'anpassen
    
       zeileZiel = Zieltabelle.Cells(Zieltabelle.Rows.Count, 4).End(xlUp).Offset(1).Row
       For Each Bereich In Ausgangstabelle.Range("C1:C1,E1:E1,G1:G1,C8:C8,E8:E8,G8:G8").Areas
           Call Bereich.Copy
           Call Zieltabelle.Cells(zeileZiel, Application.Max(4, Zieltabelle.Cells(zeileZiel, Columns.Count).End(xlToLeft).Column) + 1).PasteSpecial(Paste:=xlPasteValues)
       Next
       Application.CutCopyMode = False
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Füge einen Button hinzu, um das Makro auszuführen:

    • Gehe zu Entwicklertools > Einfügen > Button.
    • Weise das Makro Unit2 zu.
  7. Testen: Klicke auf den Button, um die Werte in die nächste freie Zeile der Zieltabelle zu kopieren.


Häufige Fehler und Lösungen

  • Das Makro fügt Daten in die falsche Zeile ein: Überprüfe, ob der Zielbereich in Tabelle2 korrekt definiert ist. Stelle sicher, dass du die Zeilen korrekt zählst, indem du die End(xlUp)-Methode verwendest.

  • Das Makro funktioniert nicht: Stelle sicher, dass die richtigen Arbeitsblattnamen verwendet werden. Es kann hilfreich sein, die Arbeitsblätter in den Variablen Ausgangstabelle und Zieltabelle anzupassen.


Alternative Methoden

Wenn du keine VBA-Lösungen nutzen möchtest, kannst du auch die Funktion INDEX verwenden. Hier ist ein Beispiel:

  1. Gehe zu Tabelle2 und füge die folgende Formel in Zelle D2 ein:

    =INDEX(Tabelle1!C:G;ZEILE(A1);SPALTENWAHL({1.3.5}))
  2. Ziehe die Formel nach unten, um weitere Werte zu extrahieren.


Praktische Beispiele

Stelle dir vor, du hast die Werte in Tabelle1 in den Zellen C1, E1 und G1, und du möchtest diese Werte in die nächste freie Zeile in Tabelle2 kopieren.

Mit dem VBA-Makro Unit2 kannst du diese Werte automatisch in die nächste freie Zeile in Spalte D einfügen, während die ersten drei Spalten in Tabelle2 bereits mit Formeln belegt sind.


Tipps für Profis

  • Verwende benannte Bereiche: Wenn du häufig mit bestimmten Zellbereichen arbeitest, kann es hilfreich sein, benannte Bereiche zu definieren, um die Lesbarkeit deines Codes zu verbessern.

  • Fehlerbehandlung einfügen: Implementiere einfache Fehlerbehandlungsmechanismen im VBA, um die Stabilität des Codes zu erhöhen.

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um die Funktionsweise deines Codes zu erklären, was besonders hilfreich ist, wenn du den Code später anpassen oder an andere weitergeben möchtest.


FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um weitere Zellen zu kopieren?
Du kannst den Zellbereich in der Zeile For Each Bereich In Ausgangstabelle.Range(...) anpassen, um mehr Zellen einzuschließen.

2. Kann ich das Makro auch in Excel Online verwenden?
Nein, VBA-Makros sind nur in der Desktop-Version von Excel verfügbar. In Excel Online kannst du keine VBA-Makros ausführen.

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