Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
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

Liste auf bestimmte Arbeitsblätter aufteilen

Liste auf bestimmte Arbeitsblätter aufteilen
Rene
Hallo,
ich habe eine lange Liste, die auf 20 bis 30 Arbeitsmappen aufgeteilt werden müssen.
zB alle Zeilen mit einem bestimmten Text oder Zahl in Spalte A.
In einer weiteren Zelle steht die Versionsnummer des Blattes, zB in D1: Version 1
In die bereits vorhandenen Arbeitsblätter sollen dann alle Zeilen mit dem Text in ein Blatt mit dem Namen Version 1 aus Zelle D1 kopiert werden. (ohne Makro würde ich nach dem Text filtern und dann in eine neue Arbeitsmappe kopieren)
Die Information - welche Zeilen in welche Arbeitsmappen kopiert werden, soll mittels einer eigenen Tabelle erfolgen. In diesem Tabellenblatt steht zB in Spalte A der Dateinamen und in Spalte B der Text, nach dem gefiltert wird und dessen Zeilen der Liste dann in die Arbeitsmappe kopiert werden. Alle Datein sind im gleichen Verzeichnis.
Wenn ich dann einmal die Liste ergänze oder eine neue Liste hineinfüge, dann würde ich in Zelle D1 Version 2 eingeben und die kopierten Zellen sollen dann in die Arbeitsblätter mit dem neuen Blatt Version 2 kopiert werden.
Danke nochmals im Voraus.
Grüße
René

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

Betreff
Benutzer
Anzeige
bitte Bsp hochladen...
25.06.2010 01:09:14
CitizenX
Hallo René,
..dann wirds vlt einfacher die Sache nachzuvollziehen.
Viele Grüße
Steffen
AW: Liste auf bestimmte Arbeitsblätter aufteilen
30.06.2010 07:18:06
fcs
Hallo René,
noch ein paar Zusatzfragen:
1: Nach welchen Spalten sollen die Daten sortiert sein, wenn sie in die Zieltabellen kopiert werden?
2: Sind die Tabellen "Version 1", 2Version 2" etc. in den Zieldateien immer schon vorhanden? Oder müssen diese ggf. erst angelegt werden?
3: Muss vor dem Kopieren geprüft werden, ob ein Artikel in dem entsprechenden Versionsblatt schon vorhanden ist? Was soll passieren, falls Ja?
4: Ist der Autofilter im Blatt "Aufzuteilende Tabelle" immer aktiv?
Gruß
Franz
Anzeige
AW: Liste auf bestimmte Arbeitsblätter aufteilen
30.06.2010 08:39:26
Tino
Hallo,
kannst diese Version mal testen.
kommt als Code in Modul1
Option Explicit 
Enum Up_Or_Down_
   iDown = 1 
   iUp = 2 
End Enum 
 
Sub Events_On(booOn As Boolean) 
With Application 
    .ScreenUpdating = booOn 
    .EnableEvents = booOn 
    .DisplayAlerts = booOn 
End With 
End Sub 
Function Check_Tab_In_WB(oWB As Workbook, strTabName$) As Boolean 
On Error Resume Next 
Check_Tab_In_WB = oWB.Sheets(strTabName).Index > 0 
End Function 
 
Function FindZelle(rngSuchBereich As Range, strSuchWert, Up_Or_Down As Up_Or_Down_) As Range 
 Set FindZelle = _
 rngSuchBereich.Find(What:="Gruppe 10", LookIn:=xlValues, _
                    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=Up_Or_Down, _
                    MatchCase:=True, SearchFormat:=False) 
End Function 
 
Sub Test() 
Dim rngOrdnung As Range, rngErste As Range, rngLetzte As Range 
Dim rngSuchBereich As Range 
Dim oSHtmp As Worksheet 
Dim oWBEx As Workbook 
 
With Tabelle2 
    Set rngOrdnung = .Range("A5", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 6) 
End With 
 
Events_On False 
 
'Tabelle kopieren, damit Formeln nicht zerstört werden 
Tabelle1.Copy Before:=Sheets(2) 
Set oSHtmp = ActiveSheet 
 
With oSHtmp 
    'Formel durch Werte ersetzen 
    .UsedRange.Value = .UsedRange.Value 
    'Sortiren nach Spalte F 
    .UsedRange.Sort Key1:=.Cells(1, 6), Order1:=xlAscending, Header:=xlYes 
     
    'Suchbereich für erste und letzte Zelle 
    Set rngSuchBereich = .Columns(6) 
     
    'Schleife über alle Zeilen 
    For Each rngOrdnung In rngOrdnung.Rows 
       
      Set rngErste = FindZelle(rngSuchBereich, rngOrdnung.Cells(1, 1), iDown) 
      'erste Zelle gefunden? 
      If Not rngErste Is Nothing Then 
         
        Set rngErste = rngErste.Offset(0, -5) 
        Set rngLetzte = FindZelle(rngSuchBereich, rngOrdnung.Cells(1, 1), iUp) 
         
        'letzte Zelle gefunden? 
        If Not rngLetzte Is Nothing Then 
             
            On Error Resume Next 
            Set oWBEx = Workbooks.Open(rngOrdnung.Cells(1, 4) & rngOrdnung.Cells(1, 3)) 
            On Error GoTo 0 
             
            If Not oWBEx Is Nothing Then 'Datei geöffnet? 
                'Prüfe ob Tabelle vorhanden 
                If Check_Tab_In_WB(oWBEx, CStr(rngOrdnung.Cells(1, 6))) Then 
                    With oWBEx.Worksheets(CStr(rngOrdnung.Cells(1, 6))) 
                        'Bereich kopieren 
                        Range(rngErste, rngLetzte).Copy .Range(rngOrdnung.Cells(1, 5)) 
                        'Bereich sortieren nach Spalte A 
                        With .Range(rngOrdnung.Cells(1, 5)).Resize(rngLetzte.Row - rngErste.Row, 6) 
                            .Cells.Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlNo 
                        End With 
                    End With 'oWBEx.Worksheets ... 
                    'Datei schließen mit speichern 
                    oWBEx.Close True 
                 Else 
                    'Tabelle nicht vorhanden, schließen ohne speichern 
                    oWBEx.Close False 
                 End If 'Check_Tab_In_WB 
            End If 'oWBEx 
         
        End If 'rngLetzte 
      End If 'rngErste 
      Set rngErste = Nothing: Set rngLetzte = Nothing: Set oWBEx = Nothing 
    Next rngOrdnung 
     
    'Temp Tabelle löschen 
    .Delete 
End With 
 
Events_On True 
 
Set rngSuchBereich = Nothing 
End Sub 
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige