Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Code Daten Filtern bis Datensatz 59.999
#1
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
Antworten Top
#2
=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.
Antworten Top
#3
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
Antworten Top
#4
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Scrt2016
Antworten Top
#5
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
Antworten Top
#6
Das sind nur 2 'minor' Anpassungen. Die schaffst du zweifellos selbst.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 2 Nutzer sagen Danke an snb für diesen Beitrag:
  • Scrt2016, GMG-CC
Antworten Top
#7
Ok danke. Da versuche ich mein Glück morgen nochmal wenn mein Kopf freier ist. Momentan finde ich nicht den richtige Weg.

BG Scrt2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste