Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro zum teilen einer Tabelle

Makro zum teilen einer Tabelle
04.11.2008 18:33:00
Josefiene
Hey liebe Excel-Kenner,
Mein Anliegen bezieht sich auf einen Datensatz den ich jeden Morgen bekomme.
Er hat maximal 2000 Zeilen, die Spalten A-L und in der ersten Zeile Überschriften für die jeweiligen Spalten.
Dieser Datensatz sollte nach Möglichkeit mit Hilfe eines VBA Codes in mehrere Tabellen (zu je 40 Zeilen) geteilt und auch seperat gespeichert werden (Beispiel: Ausgangsdatensatz 800 Zeilen - 20 resultierende Tabellen (Seite 1 - 20). Das Ganze am besten mit den jeweiligen Überschriften in jeder Tabelle. (Bespiel resultierende Tabelle 1 - Einträge 1-40 - Seite 1 usw.)
Desweiteren bräuchte ich einen anderen VBA Code der sich damit befasst in Zeile E Beträge die größer als 2000.00 sind zu filtern und die ganze Spalte in eine extra Tabelle zu kopieren. Auch hier vorzugsweise mit Überschriften. Auch diese Tabelle soll nach Möglichkeit wieder automatisch gespeichert werden (Name beispielsweise: große Beträge)
Ich bin für jede Hilfe dankbar.
Liebe Grüße
Josie

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum teilen einer Tabelle
04.11.2008 19:48:41
Tino
Hallo,
hier mal eine Lösung für Dein erstes Problem.
Sub Test()
Dim Überschrift As Range
Dim Bereich As Range
Dim nTab As Worksheet
Dim A As Long
Application.ScreenUpdating = False
With Tabelle1
    Set Überschrift = .Rows(1)
    Set Bereich = .Range("2:41")
    
    For A = 2 To .UsedRange.Rows.Count Step 40
     Set nTab = Worksheets.Add(, Worksheets(Sheets.Count))
     Überschrift.Copy nTab.Range("A1")
     Bereich.Copy nTab.Range("A2")
     Set Bereich = Bereich.Offset(40, 0)
    Next A

End With
Application.ScreenUpdating = True
End Sub


Gruß Tino

Anzeige
AW: Makro zum teilen einer Tabelle
05.11.2008 11:28:00
Josefiene
Lieber Tino,
vielen Dank für deine Hilfe. Ich wollte das ganze gleich mal ausprobieren und habe es leider nicht hinbekommen. Ich bekomme die Fehlermeldung "Object required".
Denke das Problem liegt hier:
With Tabelle1
Hier müsste Tabelle1 wohl von mir ersetzt werden. Ich weiß allerdings nicht womit und habe auch schon etwas herumprobiert aber keine Lösung gefunden. Kannst du mir da eventuell noch einmal kurz helfen?
Liebe Grüße
Josie
AW: Makro zum teilen einer Tabelle
05.11.2008 16:04:00
Tino
Hallo,
verwende den Objektnamen (siehe Grafik) der Tabelle oder schreibe Sheets("Tabelle1"),
wobei "Tabelle1" der Name der Tabelle ist (siehe Grafik in Klammern oder im Excel Tabellenregister).
Userbild
Gruß Tino
Anzeige
AW: Makro zum teilen einer Tabelle
05.11.2008 17:19:15
Josefiene
Alles klar, habe es hinbekommen. Problem war das mein Excel auf Englisch gestellt ist und ich somit Sheet1 eingeben musste. Läuft nun perfekt.
Hast du eventuell noch eine Idee wie ich die erstellten Sheets (Tabellen) einzeln speichern kann, da diese aufgeteilt werden müssen?
Allerliebsten Dank und liebe Grüße !
Josie
AW: Makro zum teilen einer Tabelle
05.11.2008 18:38:00
Tino
Hallo,
ok. wie wäre es hiermit?
Die Dateien werden im Ordner der der Datei erstellt.
Modul Modul1
Option Explicit 
 
Sub Test() 
Dim Überschrift As Range 
Dim Bereich As Range 
Dim nTab As Worksheet 
Dim A As Long, i As Integer 
Dim NeuMappe As Workbook 
Dim Pfad As String 
 
With Application 
 .StatusBar = "Dateien werden erstellt, bitte warten...!" 
 .ScreenUpdating = False 
 .DisplayAlerts = False 
Pfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\") 
With Tabelle1 
    Set Überschrift = .Rows(1) 
    Set Bereich = .Range("2:41") 
     
    For A = 2 To .UsedRange.Rows.Count Step 40 
     Set nTab = Worksheets.Add(, Worksheets(Sheets.Count)) 
      Überschrift.Copy nTab.Range("A1") 
      Bereich.Copy nTab.Range("A2") 
         
            nTab.Copy 
            Set NeuMappe = ActiveWorkbook 
            i = i + 1 
            NeuMappe.SaveAs Pfad & "Datei_" & i 
            NeuMappe.Close False 
            nTab.Delete 
      
     Set Bereich = Bereich.Offset(40, 0) 
    Next A 
 
End With 
 .DisplayAlerts = True 
 .ScreenUpdating = True 
 .StatusBar = False 
End With 
End Sub 


Gruß Tino

Anzeige
AW: Makro zum teilen einer Tabelle
05.11.2008 19:03:00
Josefiene
Ich mache immer irgendwas falsch glaube ich. :-(
Ich habe die Ausgangsdatei im Moment auf dem Desktop gespeichert. Aber nach durchlaufen des Makros sind keine neuen Datein auf dem Desktop. Wäre es nicht möglich die einzelnen Tabellen, die ich mit deinem ersten Makro erstellt habe seperat zu speichern?
Oder muss ich bei dem zweiten Makro noch irgendetwas eintragen, was ich vergessen haben könnte?
Eine Fehlermeldung bekomme ich jedenfalls nicht.
Bitte entschuldige das ich so viel deiner Zeit in Anspruch nehme.
Liebe Grüße
AW: Makro zum teilen einer Tabelle
05.11.2008 19:14:00
Tino
Hallo,
gehe mal bei Dir mit der F8 Taste schrittweise vor und schau mal was er macht.
Fahre auch mal mit der Maus über die Variable Pfad und schau mal ob alles passt.
PS: ich habe xl2003 und es funktioniert bei mir.
Gruß Tino
Anzeige
AW: Makro zum teilen einer Tabelle
05.11.2008 19:19:07
Josefiene
Hmm, ich seh das er neue Sheets erstellt und schließt und er scheint sie auch zu speichern. Ich finde sie nur leider nicht. Wäre es möglich einen Pfad vorzugeben?
Komme mir gerade so doof vor.
Vielen Dank für deine Geduld.
Liebe Grüße
AW: Makro zum teilen einer Tabelle
05.11.2008 19:35:00
Tino
Hallo,
tausche die Zeile

Pfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")


Mit dieser aus


Pfad = "C:\"


PS: schau mal über den Explorer in den Desktop, die Dateien müssen dort sein!
Gruß Tino

Anzeige
AW: Makro zum teilen einer Tabelle
06.11.2008 14:19:00
Josefiene
Habe die anderen Dateien nun auch gefunden. Wurden im Ordner der Personal Makros gespeichert.
Habe nun aber den Pfad selber festgelegt und bin fast rundum zufrieden.
Das einzige was das ganze nun perfekt machen würde wäre, wenn ich in dem Namen der neuen Dateien den Namen der Ursprungsdatei (immer nach Erstellungsdatum benannt) mit einfügen könnte.
Beispiel:
Ursprungsdatei heißt 09.10.2008
resultierenden Dateien sollten dann 09.10.2008_Seite1 usw heißen.
Solltest du hierfür eine schnelle Lösung habenwäre es toll, ansonsten bin ich so aber auch total zufrieden.
Ein riesengroßes Dankeschön für deine Geduld und die tolle Hilfe.
Liebe Grüße
Fiene
Anzeige
AW: Makro zum teilen einer Tabelle
06.11.2008 20:23:11
Tino
Hallo,
teste mal ob es nach deinen Vorstellungen funktioniert.
Option Explicit

Sub Test()
'Deklarierung 
Dim Überschrift As Range
Dim Bereich As Range
Dim nTab As Worksheet
Dim A As Long, i As Integer
Dim NeuMappe As Workbook
Dim Pfad As String, strDateiName As String

 
With Application
 .StatusBar = "Dateien werden erstellt, bitte warten...!"
 .ScreenUpdating = False
 .DisplayAlerts = False
Pfad = "C:\" 'Speicherpfad 
'aktueller Dateiname ohne Extension 
strDateiName = Left$(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1)
With Tabelle1 'Tabelle mit Daten 
    Set Überschrift = .Rows(1) 'ist Überschrift 
    Set Bereich = .Range("2:41") 'erster Bereich 40 Zeilen 
    
    'Schleife bis letzte Zeile in 40er Schritten 
    For A = 2 To .UsedRange.Rows.Count Step 40
     'neue Tabelle erstellen 
     Set nTab = Worksheets.Add(, Worksheets(Sheets.Count))
      'Überschrift in Tabelle kopieren 
      Überschrift.Copy nTab.Range("A1")
      'Werte in Tabelle übertragen 
      Bereich.Copy nTab.Range("A2")
         'Tabelle in neue Mappe 
            nTab.Copy
         'neue Datei in Variable 
            Set NeuMappe = ActiveWorkbook
         'Zähler für Seitenindex 
            i = i + 1
         'Datei Speichern unter 
            NeuMappe.SaveAs Pfad & strDateiName & "_Seite" & i
         'neue Datei schließen 
            NeuMappe.Close False
         'Tabelle wieder löschen 
            nTab.Delete
         'nächte 40 Zeilen festlegen 
     Set Bereich = Bereich.Offset(40, 0)
    Next A
 
End With
 .DisplayAlerts = True
 .ScreenUpdating = True
 .StatusBar = False
End With
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Makro zum teilen einer Tabelle
07.11.2008 11:05:00
Veronika
Perfekt ! Vielen, vielen Dank für deine tolle Hilfe !
Hoffe es hat Dich nicht allzu viel Zeit gekostet.
Liebe Grüße und ein schönes Wochenende
Veronika

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige