Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmte Zeilen in einer neuen Datei speichern

Forumthread: Bestimmte Zeilen in einer neuen Datei speichern

Bestimmte Zeilen in einer neuen Datei speichern
31.10.2005 13:38:51
Gustav
Hallo zusammen,
suche ein Makro, welches mir hilft bestimmte Zeilen in einer neuen Datei zu speichern.
In den Spalten "J" und "K" stehen bestimmte Werte.
Jetzt sollen jeweils alle Zeilen und Spalten zwischen den zwei Werten (incl. der Zeilen in der die Werte stehen) markiert, kopiert und in einer neuen Datei eingefügt werden.
Im Beispiel sollten zwei Dateien entstehen. Die eine soll "1000001" und die
andere "1000019" heißen.
Es soll auch für mehr als diese 2 Datensätze funktionieren.
Schaff es einfach nicht die Markierung zu setzten, weil auch Leerzeilen dazugehören.
https://www.herber.de/bbs/user/27986.xls
Besten Dank vorab.
Gustav
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zeilen in einer neuen Datei speicher
31.10.2005 14:07:05
gordon
Hi Gustav,
erklär' mal:
"Schaff es einfach nicht die Markierung zu setzten, weil auch Leerzeilen dazugehören."
Was schaffst Du hier nicht ? Sollen die Leerzeilen unterbleiben ?
ThisWorkbook.Worksheets("Help").range("J1:K16").copy würde z.B. den Bereich in einen zuvor zu definierenden Zielbereich kopieren.
Programmierkenntnisse vorhanden ?
Könnte ein rudimentäres Makro bauen, aber Fehlerhandling und Sonderfälle (z.B.Sind die Spaltenwerte in G und K immer und Saldo alternierend, was passiert, wenn nicht ?) musst Du dann einbauen - Kannst Du das ?
Gibt's bei Euch keinen IT-Support, der hier helfen kann ?
Gruß
gordon
Gruß
gordon
Anzeige
AW: Bestimmte Zeilen in einer neuen Datei speichern
31.10.2005 14:23:24
Gustav
Hallo Gordon,
die Datensätze sollen so bleiben.
Mit Leerzeilen und mit allem.
Helfen kann mir hier leider keiner. (leidiges Thema)
Wenn Du was hast, was die Testdatei bearbeiten kann, dann
bastel ich mir das dann schon zurecht.
Mir fehlt irgendwie total der Ansatz.
Danke
Gustav
Anzeige
...das sollte es sein...
31.10.2005 17:03:40
gordon
Hallo Gustav,
jaja, der arme Bankensektor ;-) kein Geld für IT...

Sub Gustav_Mark()
Dim rlc As Range, rToCopy As Range, _
rCopyStart As Range, rCopyEnd As Range, _
rSource As Range, c As Range, rToPaste As Range, _
wsHelp As Worksheet, _
wb As Workbook, _
strCostcentre As String
Set wsHelp = ThisWorkbook.Worksheets("Help")
'last cell in spalte k ermitteln
Set rlc = wsHelp.Range("K65536")
If Len(rlc) = 0 Then Set rlc = rlc.End(xlUp)
'rSource auf spalte j mit länge von spalte k legen
Set rSource = wsHelp.Range("J3:J" & rlc.Row)
For Each c In rSource
'startzelle ? -> prüfung nur auf inhalt, kein format/text/zahl etc.
If Len(c.Value) <> 0 Then
Set rCopyStart = wsHelp.Cells(c.Row, 1)
strCostcentre = c.Value
End If
'endzelle ?
If c.Offset(0, 1) = "Saldo" Then
Set rCopyEnd = c.Offset(0, 1)
End If
' rudimentäre plausibilitaet, z.B. ende ohne / vor start gefunden
If Not rCopyEnd Is Nothing Then
If rCopyStart Is Nothing Then
MsgBox "Fehler, kein Start für Ende in Zeile " & rCopyEnd.Row
Exit Sub
End If
' zu kopierender Bereich
Set rToCopy = wsHelp.Range(rCopyStart, rCopyEnd)
'neues workbook oeffnen
Set wb = Workbooks.Add
' bereich in worksheet1 einfügen
rToCopy.Copy (wb.Worksheets(1).Cells(1, 1))
' neues wb speichern und schliessen
wb.SaveAs ("c:\temp\tst_" & strCostcentre & ".xls"): wb.Close (False)
'init bereich
Set rCopyEnd = Nothing
Set rCopyStart = Nothing
End If
Next
End Sub

Gruß
gordon
Anzeige
AW: Bestimmte Zeilen in einer neuen Datei speichern
01.11.2005 10:53:06
Gustav
Hallo Gordon,
klappt astrein. Vielen Dank für die Mühe.
Hast mir echt weitergeholfen.
Vielen Dank.
;
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Zeilen in einer neuen Datei speichern


Schritt-für-Schritt-Anleitung

Um spezifische Zeilen in einer neuen Excel-Datei zu speichern, kannst du ein einfaches VBA-Makro verwenden. Hier ist eine Anleitung, wie du vorgehst:

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

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Gustav_Mark()
        Dim rlc As Range, rToCopy As Range, _
        rCopyStart As Range, rCopyEnd As Range, _
        rSource As Range, c As Range, rToPaste As Range, _
        wsHelp As Worksheet, _
        wb As Workbook, _
        strCostcentre As String
    
        Set wsHelp = ThisWorkbook.Worksheets("Help")
        ' Last cell in Spalte K ermitteln
        Set rlc = wsHelp.Range("K65536")
        If Len(rlc) = 0 Then Set rlc = rlc.End(xlUp)
        ' rSource auf Spalte J mit Länge von Spalte K legen
        Set rSource = wsHelp.Range("J3:J" & rlc.Row)
    
        For Each c In rSource
            ' Startzelle prüfen
            If Len(c.Value) <> 0 Then
                Set rCopyStart = wsHelp.Cells(c.Row, 1)
                strCostcentre = c.Value
            End If
            ' Endzelle prüfen
            If c.Offset(0, 1) = "Saldo" Then
                Set rCopyEnd = c.Offset(0, 1)
            End If
    
            If Not rCopyEnd Is Nothing Then
                If rCopyStart Is Nothing Then
                    MsgBox "Fehler, kein Start für Ende in Zeile " & rCopyEnd.Row
                    Exit Sub
                End If
    
                ' Zu kopierender Bereich
                Set rToCopy = wsHelp.Range(rCopyStart, rCopyEnd)
                ' Neues Workbook öffnen
                Set wb = Workbooks.Add
                ' Bereich in Worksheet1 einfügen
                rToCopy.Copy (wb.Worksheets(1).Cells(1, 1))
                ' Neues Workbook speichern und schließen
                wb.SaveAs ("c:\temp\tst_" & strCostcentre & ".xls"): wb.Close (False)
                ' Init Bereich
                Set rCopyEnd = Nothing
                Set rCopyStart = Nothing
            End If
        Next
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe auf Run > Run Sub/UserForm.

  5. Überprüfe den Speicherort: Deine neuen Excel-Dateien sollten im angegebenen Verzeichnis (c:\temp\) gespeichert werden.


Häufige Fehler und Lösungen

  • Fehler: "Fehler, kein Start für Ende in Zeile"
    Möglicherweise wurde die Startzelle nicht richtig gesetzt. Stelle sicher, dass die Spalte J Werte enthält und dass die Endzelle in Spalte K den Wert "Saldo" hat.

  • Makro funktioniert nicht
    Überprüfe, ob du die Datei mit Makrospeicherformat (z.B. .xlsm) gespeichert hast. Außerdem sollte die Makrosicherheit in den Excel-Optionen auf "Alle Makros aktivieren" gesetzt sein.


Alternative Methoden

Falls du kein Makro verwenden möchtest, kannst du auch manuell die Zeilen markieren und in eine neue Datei kopieren. Allerdings ist die Makro-Methode deutlich effizienter, besonders bei großen Datenmengen.

  1. Manuelles Kopieren:
    • Filtere die Daten in den Spalten J und K.
    • Markiere die gefilterten Zeilen.
    • Kopiere die markierten Zeilen und füge sie in eine neue Arbeitsmappe ein.

Praktische Beispiele

Angenommen, du hast eine Tabelle mit den folgenden Werten in den Spalten J und K:

J (Kostenstelle) K (Status)
1000001 Saldo
1000002 Aktiv
1000019 Saldo

Wenn du das Makro ausführst, werden die Zeilen, die "1000001" und "1000019" in Spalte J haben, in zwei separate Dateien gespeichert.


Tipps für Profis

  • Optimierung: Du kannst das Makro erweitern, um auch spezifische Bedingungen für andere Spalten zu berücksichtigen oder die Dateinamen dynamisch anzupassen.
  • Fehlerbehandlung: Ergänze das Makro um Fehlerbehandlungsroutinen, um unerwartete Probleme besser zu managen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehr Bedingungen zu berücksichtigen?
Du kannst zusätzliche If-Abfragen im VBA-Code hinzufügen, um die Bedingungen für das Kopieren weiter zu verfeinern.

2. Funktioniert das Makro in Excel 2016?
Ja, der bereitgestellte VBA-Code sollte in Excel 2016 und neueren Versionen problemlos funktionieren. Achte darauf, die richtigen Berechtigungen für die Ausführung von Makros zu haben.

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