Tabelle stückeln

Hallo zusammen!

Ich habe da ein kleines Problemchen.
Da ich immer wieder eine lange Excel-Liste erhalte, die ich in kleinere stückeln muss, bin ich auf der Suche nach einem Makro, das mir das ganze erleichtert.
Die Liste die ich erhalte besteht aus 5 Spalten, wobei in der ersten Spalte immer da wo die nächste Stückelung erfolgen soll eine fortlaufende Zahl steht (Also in Reihe 3 steht 1, in Reihe 28 steht 2, in Reihe 39 steht 3, usw.)

So, nun sollen die Zeilen 3-27 in eine neue Excel-Mappe kopiert werden. Die Überschriften sollen übernommen werden und zusätzlich eine Spalte mit einem Dropdownmenue ausgestattet sein,. welches immer die gleiche Füllung erhält.

 Ich hoffe ich hab mich verständlich ausgedrückt.

Vioelen Dank im Voraus und liebe Grüße

René

Hallo René,

das klingt mit VBA machbar. Kannst du mal eine Beispielmappe hochladen, so wie sie ungestückelt aussieht, z.B. hier: http://www.file-upload.net
Das mit der Überschrift und dem Dropdown-Menü ist mir noch etwas unklar. Wenn ich das sehen kann, wird es bestimmt verständlicher.

Gruß, Andreas

Hallo Andreas,

also ich hab mal eine kurze version (mit falschen Angaben) hochgeladen.

Das Makro was ich bereits gebastelt hab ist auch mit drin.

Testmappe

Sorry René,

der Link funktioniert bei mir nicht.

Gruß, Andreas

dann hier nochmal! :smile:

http://www.file-upload.net/download-9687707/Testmapp…

dann hier nochmal! :smile:
http://www.file-upload.net/download-9687707/Testmapp…

Hallo René

Da lässt sich schon was machen. Ich habe noch Fragen dazu:

a) Du schreibst in Deiner Excel-Datei: „Der Name der Mappe setzt sich aus der Zahl in Zelle A2 und dem Titel in Zelle G1 aus der Originaldatei zusammen.“ Ich verstehe das so: Die neue Datei sollte also heissen 1_Export_2014_10_13_Eingang.xlsm oder
2_Export_2014_10_13_Eingang.xlsm
usw. - Ist das richtig?

b) Irgendwo muss man hinterlegen können, welche Zahl aus Spalte A bereits verwendet wurde. Kann man dazu z. B. H1 in der Originaldatei verwenden?

c) " … neue Arbeitsmappe … (soll) an einem bestimmten Pfad abgespeichert werden." - Ich gehe davon aus, dass dieser Pfad immer der gleiche ist. - Stimmt das?

Grüsse Niclaus

Hallo René,

ich habe hier deinen Makro mal erweitert und hoffe, er tut, was er soll:

Option Explicit

Sub Liste\_stueckeln()
 Dim weiter As Long
 Dim pfad As String
 Dim zVon As Long, zBis As Long, letzte As Long

' Pfad erfragen (wenn es immer der selbe Pfad ist, kannst du dir diesen Teil natürlich sparen
' und eine festen Pfad eintragen)
 With Application.FileDialog(msoFileDialogFolderPicker)
 .AllowMultiSelect = False
 .Title = "Wohin sollen die Teil-Listen gespeichert weden?"
 .InitialView = msoFileDialogViewDetails
 .InitialFileName = "C:"
 weiter = .Show
 If weiter = 0 Then Exit Sub
 pfad = .SelectedItems(1) & "\"
 End With

 With Tabelle1
 zVon = 2
 letzte = .Cells(.Rows.Count, 2).End(xlUp).Row
 Do
 zBis = WorksheetFunction.Min(.Cells(zVon, 1).End(xlDown).Row - 1, letzte)

 ' neue Mappe erstellen
 Workbooks.Add

 ' Überschriften:
 Range("B1") = "Auftragsnummer"
 Range("C1") = "Kunde"
 Range("D1") = "Unternehmes-ID"
 Range("E1") = "Geschäftsjahr bis"
 Range("F1") = "Ergebnis"

 'Ergebnisliste erstellen
 Range("K3") = "war bereits angepasst"
 Range("K4") = "neu angepasst"
 Range("K5") = "ohne RN gelöscht"
 Range("K6") = "Insolvenz"
 Range("K7") = "erweiterte Recherche"

 ' Spalte "K" ausblenden
 Columns("K:K").Hidden = True

 ' Dropdownmenue erstellen (Ergebnis)
 With Range("F2")
 With .Validation
 .Delete
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= \_
 xlBetween, Formula1:="=$K$3:blush:K$7"
 .IgnoreBlank = True
 .InCellDropdown = True
 .InputTitle = ""
 .ErrorTitle = ""
 .InputMessage = "Ergebnis"
 .ErrorMessage = ""
 .ShowInput = True
 .ShowError = True
 End With
 .Copy Destination:=Range("F3:F" & zBis - zVon + 1)
 End With

 ' Hier dann die Daten aus der Originaldatei hinkopieren
 .Range("A" & zVon & ":E" & zBis).Copy Destination:=Range("A2")

 ' Als neue Mappe speichern
 ActiveWorkbook.SaveAs Filename:=pfad & Range("A2") & .Range("G1") & ".xlsx"
 ActiveWorkbook.Close
 zVon = zBis + 1
 Loop Until zBis = letzte
 End With
End Sub

Gruß, Andreas

1 Like

Hallo Andreas,

danke Dir, also das Makro arbeitet fast richtig.

Er erzeugt die neuen Mappen und kopiert auch die richtigen Daten.
Allerdings funktioniert das umbenennen nicht und es wird bei jeder Mappe gefragt, ob ich speichern will…

Kann man das noch hinkriegen?

Grüße

René

Hallo Niclaus

a) Du schreibst in Deiner Excel-Datei: „Der Name der Mappe
setzt sich aus der Zahl in Zelle A2 und dem Titel in Zelle G1
aus der Originaldatei zusammen.“ Ich verstehe das so: Die neue
Datei sollte also heissen 1_Export_2014_10_13_Eingang.xlsm
oder
2_Export_2014_10_13_Eingang.xlsm
usw. - Ist das richtig?

Ja genau - da hakt auch das Makro vom Andreas noch…

b) Irgendwo muss man hinterlegen können, welche Zahl aus
Spalte A bereits verwendet wurde. Kann man dazu z. B. H1 in
der Originaldatei verwenden?

Da gibt es genug Möglichkeiten - Spalte H wäre frei dafür - aber die eigentliche Stückelung haben wir (bzw. der Andreas) mit seinem Makro hingekriegt…

c) " … neue Arbeitsmappe … (soll) an einem bestimmten Pfad
abgespeichert werden." - Ich gehe davon aus, dass dieser Pfad
immer der gleiche ist. - Stimmt das?

leider nicht - aber die Abfrage aus Andreas’ Makro funktioniert gut…

Das Problem bei dem Makro besteht noch darin:

Das Umbenennen der Datei funktioniert nicht und die nervige Abfrage beim Speichern der „neuen“ Mappen wäre super, wenn wir das noch hinkriegen! :smile: :wink:

Gruß und danke schonmal

René

Hallo René,

was meinst du mit „das Umbenennen funtioniert nicht“? Bekommen die neuen Dateien nicht den richtigen Namen? Wenn das so ist, setz doch mal einen Haltepunkt bei der Zeile mit dem SaveAs und schau dir den Inhalt der Ranges an, ob da das Richtige steht.
Und wieso er bei jedem Speichern fragt, ob er das soll verstehe ich nicht. Ich kann mir nur vorstellen, dass er aus irgendwelchen Gründen immer wieder mit demselben Namen speichern will und dann fragt, ob er überschreiben soll.

Gruß, Andreas

Hallo Andreas,

also ich guck mir das Makro gleich nochmal genau an - aber im ersten und zweiten Testlauf wollte er die neuen Mappen immer unter dem Namen

Mappe1
Mappe2
Mappe3
Mappe4
usw.

speichern und fragte, ob die Änderungen übernommen werden sollen…

Gruß

René

Allerdings funktioniert das umbenennen nicht und es wird bei
jeder Mappe gefragt, ob ich speichern will…

Hallo René

Ich habe Deine Beispiel-Mappe verwendet und das Makro von Andreas eingefügt. Da klappt es wunderbar.

Nervig wird es nur, wenn Du das Makro zweimal oder öfter hintereinander laufen lässt und jeweils den gleichen Ordner wählst: Dann sind ja die Dateien bereits vorhanden und Du wirst gefragt, ob Du diese Dateien überschreiben willst. - Ist das Dein Problem?

Diese Rückfrage kannst Du verhindern mit „Application.DisplayAlerts = False“
Wenn Du am Ende des Makros von Andreas folgende Aenderung vornimmst, werden die Dateien ohne Rückfrage überschrieben.
.

 ' Als neue Mappe speichern
 Application.DisplayAlerts = False ' NEUE ZEILE
 ActiveWorkbook.SaveAs Filename:=pfad & Range("A2") & .Range("G1") & ".xlsx"
 ActiveWorkbook.Close
 Application.DisplayAlerts = True ' NEUE ZEILE
 zVon = zBis + 1

.
Eine andere Möglichkeit: Bei der Ausführung des Makros jeweils einen neuen Ordner eröffnen. Ganz zu Beginn des Makros wird ja der Pfad erfragt. Dort kannst Du auch einen neuen Ordner eröffnen mit dem Kontextmenü (rechte Maustaste).

Ich hoffe, das hilft Dir einen Schritt weiter. Grüsse Niclaus

Hallo Andreaus und Niclaus,

Hatte scheinbar ein Fehler im Kopieren erzeugt…

Also das makro läuft, aber eins hakt trotzdem noch… :frowning:

Die Originaldatei ist um einiges größer (insgesamt sind das 65 neu zu erstellende Listen aus einer).
Aber das Makro endet immer nach der 9. erstellten Liste…

*grummel*

Vielen Dank aber schonmal an Euch beide… :smile:

Kein Problem. Nehme alles zurück! :smile:

Das Makro funktioniert jetzt 1A!

Danke Euch beiden vielmals. :smile:

Hi René,

endet das Makro kommentar- und fehlerlos nach der 9.? Dann kann es fast nur daran liegen, dass die letzte gefüllte Zelle nicht richtig gefunden wird. Tacker den Makro mal mit F8 durch und schau dir an, was in die Variable „letzte“ geschrieben wird. Stimmt der Eintrag? Der Makro sucht in Spalte B nach der letzten Zeile. Wenn aus irgendwelchen Gründen in Spalte B keine Einträge stehen sollten, dann ändere das Makro auf eine Spalte, die Daten bis zur letzten Zeile enthält (die 2 in der Codezeile „letzte=…“ auf eine andere Spaltennummer setzten).

Gruß, Andreas

Hallo Andreas,

ja genau da lag der Fehler! :smile:

In der originalliste ist eine leere Zeile drin (hätte eigentlich nicht sein dürfen) - denke durch meine Kopiererei und testerei sit das passiert. :smile:

Makro funktioniert super.

Danke Dir nochmal! :smile:

Gruß

René