Clever-Excel-Forum

Normale Version: VBA Code Daten Filtern bis Datensatz 59.999
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo lieber Comunity,

ich habe eine kleine Herausforderung. Wir haben eine riesige xls. Datei welche in verschiedene Bereiche gesplittert werden muss, je nach Suchkriterium, 
Wir können in unserem weiterführenden System nur das Format 97-2003 verarbeiten, Problem hier - Daten nur bis 59.999. 
Momentan mache ich das noch händisch, sprich:
Suchkriterium 1:
neues wbk, erstmal alle gefilterten da rein, dann weitere Bearbeitung, danach muss die Datei die 300.000 Zeilen hat in eben mind.5 zerlegt werden und neu gespeichert werden. Mit eben Datei 1 Datei 2 Datei 3 usw. Bis alle Daten gespeichert wurden in eben jeweils neue xls. 97-2003 max 59.999 Zeilen.
Habt ihr eine Idee, wie man dies realisieren kann? Die Daten kommen mit unregelmäßiger Größe also mal sind es 100.000 Zeilen mal 300.000 Zeilen. Confused

Über einen Lösungsvorschlag wäre ich glücklich.

Danke euch
Scrt2016
=INDEX(A:Z;000001;):INDEX(A:Z;1;060000)
=INDEX(A:Z;060001;):INDEX(A:Z;1;120000)
=INDEX(A:Z;120001;):INDEX(A:Z;1;180000)
=INDEX(A:Z;180001;):INDEX(A:Z;1;240000)
=INDEX(A:Z;240001;):INDEX(A:Z;1;300000)


als Matrixformel auf dem jeweiligen (der 5) Zielbereich(e) A1:Z60000 abschließen

Noch schicker:

1) 1 neue Tabelle in der Datei einrichten und dort wie oben

=INDEX(A:Z;1+(AA1-1)*60000;):INDEX(A:Z;1;60000+(AA1-1)*60000)

matrix-abschließen.

2) Blatt 4mal kopieren

3) In die 5 Zellen AA1 dann die Werte 1 bis 5 eintragen.
Danke für deine schnelle Antwort. Anscheinend bin ich da noch nicht ganz so erfahren. Das hier ist mein Ausgangscode mit dem ich arbeite, aber eben nur bei alles Dateien die nicht mehr als die geforderten Zeilen habe, wo genau muss ich das hinsetzen? Huh

ActiveSheet.Range("$A$1:$DA$313225").AutoFilter Field:=7, Criteria1:="Alles zusammen*"
    Dim wkb, wkbnew As Workbook
    Set wkb = ThisWorkbook
    Rows("1:1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Set wkbnew = Application.Workbooks.Add
    wkbnew.Sheets(1).Paste Destination:=wkbnew.Sheets(1).Range("$A$1")
    wkbnew.SaveAs ".....\alles zusammen_heute_" & Format(Now, "DD.MM.YYYY") & ".xls", FileFormat:=xlExcel8
    wkbnew.Close
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    With ActiveSheet
    If .FilterMode Then .ShowAllData
    End With

Direkt in die Tabelle eintragen, da zeigt es bei mir immer Bezug an. Oder eben Name.
Ich würd es gern gleich in den Code reinpacken, geht das irgendwie?
Die Baustelle ist eben, dass es mal eine Datei zum Schluss ist und mal eben 5 oder 6 usw.

ich danke euch 
BG Scrt2016
Code:
Sub M_snb()
  Sheets.Add , Sheets(Sheets.Count)

  For j = 0 To Sheets(1).UsedRange.Rows.Count \ 60000 + 1
    Sheets(1).Cells(j * 60000 + 1, 1).Resize(60000, Sheets(1).UsedRange.Columns.Count).Copy Sheets(2).Cells(1)
    Sheets(2).Copy
    With ActiveWorkbook
      .SaveAs "G:\OF\first.xls", 56
      .Close
    End With
  Next
End Sub
Erstmal riesen Dank.

Der Code an sich sieht gut aus und funktioniert einwandfrei. Nur schneidet es mir immer die erste Zeile ab beim kopieren und es speichert die Datei, die zweite Datei hingegen kann nicht gespeichert werden, weil er die erste Datei überschreiben würde, da der Name ja bereits existiert. Wie kann ich das umgehen?

Die Überschrift muss in alles Dateien vorhanden sein, da das die Parameter für die weiter Verarbeitung sind.

Danke 
Scrt2016
Das sind nur 2 'minor' Anpassungen. Die schaffst du zweifellos selbst.
Ok danke. Da versuche ich mein Glück morgen nochmal wenn mein Kopf freier ist. Momentan finde ich nicht den richtige Weg.

BG Scrt2016