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

Sheets durchlaufen und einzelne DS kopier

Sheets durchlaufen und einzelne DS kopier
Jockel
Hallo,
hatte vielleicht zufällig jemand schon mal ein ähnliches Problem und weiss eine Lösung ? :
Ich habe ein Mappe mit mehreren Tabellenblätter. Grob gesagt möchte ich mit einem Makro (fast) alle Tabellenblätter durchlaufen und bei allen Datensätze , die in der Spalte B den String "OUT" beinhalten, diese in eine Gesamtübersicht kopieren.
- Zuerst geht es um die Auswahl der Blätter. Es sollen nicht alle Tabellenblätter durchlaufen werden.
Ich habe mal eine Formel gesehen, mit der konnte man ein erstes Sheet (per Name) und ein letztes Sheet definieren. Alles was sich innerhalb der beiden Sheets (Trenner) an Tabellenblätter befand, wurde berücksichtigt.
So was in der Art habe ich mir vorgestellt. Ich habe zwischen meine Sheets zwei neue Sheets eingefügt, das erste heißt "FIRST" der zweite "LAST" . alles was sich nun zwischen "FIRST" und "LAST" befindet , soll berücksichtigt werden. So kann ich ganz locker einfach sheets zwischen die Beiden rein und raus schieben, ohne dass ich was an Code anfassen muss. Geht sowas per Makro.
- Wenn ja, soll das Makro einfach diese Tabellenblätter zwischen "FIRST" und "LAST" einzeln durchlaufen, jeweils die Spalte "B" durchlaufen und überall, wo in Spalte B "OUT" drin steht, soll die komplette Zeile in das Blatt "SUMMEN" kopiert werden.
So, dass ich am Schluss in dem Blatt "SUMMEN" alle Zeilen untereinander stehen haben bei denen in B das "OUT" stand. (aber wie gesagt, nur die sheets zwischen "FIRST" und "LAST" )
Die Datensätze sollten dann auf den Sheet "SUMMEN" erst ab Zeile 5 eingefügt werden.
Ist das per Makro möglich, wäre mir eine grosse Hilfe.
Danke mal
Jockel
AW: Sheets durchlaufen und einzelne DS kopier
15.02.2011 18:50:35
Jürgen
Hallo Jockel
hilft Dir da nicht eine Pivottaballe mit mehreren Konsolidierungsbereichen weiter? "Daten - PivotTable und PivotChartbericht", dort die Option "Mehrere Konsolidierungsbereiche" + "Weiter" + "Weiter", dort nacheinander die gewünschten Bereiche festlegen + "Fertigstellen". Ungewünschte Zeilen kannst du dann immernoch per Rechtsklick + "Ausblenden" verbergen.
Gruß, Jürgen
AW: Sheets durchlaufen und einzelne DS kopier
15.02.2011 19:14:20
jockel
Hi,
Es sollte auf jeden Fall ein Makro sein. Komme mit Makros besser klar. Wenn das mit dem ausschliessen nicht geht, kann man es vielleicht so machen, dass man beim durchlaufe abfrägt, ALLE DURCHLAUFEN AUSSER XYZ. Das wűrde auch schon helfen.
Vielleicht findet sich noch eine Idee.
Gruß
Jockel
Anzeige
AW: Sheets durchlaufen und einzelne DS kopier
15.02.2011 19:17:09
Josef

Hallo Jockel,
wenn man sowieso VBA bemüht, kann man sich die zusätzlichen Blätter aber wirklich sparen.
Hier ein Beispiel mit Tabellenauswahl über UserForm.
https://www.herber.de/bbs/user/73568.xls

Gruß Sepp

AW: Sheets durchlaufen und einzelne DS kopier
15.02.2011 20:57:14
Jockel
Hallo Sepp,
das ist eine noch bessere Idee :-) Das ist natürlich viel eleganter.
Ich werde es morgen mal in meine Mappe einbauen und gebe dir wieder Bescheid.
Auf jeden Fall vielen Dank bis hierher
Gruß
Jockel
Anzeige
AW: Sheets durchlaufen und einzelne DS kopier
16.02.2011 08:56:24
Jockel
Hallo Sepp,
also, danke noch mal, funktioniert alles bestens.
Vielleicht noch ne kleine Ergänzung. Die Daten werden alle schön in das Blatt "Summen" geschrieben.
Nun habe ich gemerkt, bei vielen Tabellenblätter verliert man schnell den Überblick, welcher Datensatz aus welcher Tabelle kam.
Ich habe momentan beim rüber kopieren in das "Summen" - Blatt die Spalte A noch leer. Wäre es möglich, vor jeden Datensatz beim rüberkopieren in die Zelle A zu schreiben:
-entweder den Tabellenblattname
-oder den inhalt aus Zelle B2
Bei beiden Varianten steht jeweils der gleiche Name drin. So könnte ich dann bei jedem datensatz sehen, woher er ursprünglich kam.
Wenn das nicht möglich ist (weil vielleicht die komplette Zeile kopiert wird) versuche ich, in den Quell-Tabellenblätter diese information vorab per Makro in die Spalte A reinzuschreiben, damit sie gleich mit kopiert werden.
Vielleicht hast du eine Idee
Gruß
Jockel
Anzeige
AW: Sheets durchlaufen und einzelne DS kopier
16.02.2011 09:25:46
Josef

Hallo Jockel,
ersetze den Code von CommanButton1 durch folgenden.
Private Sub CommandButton1_Click()
  Dim lngIndex As Long, lngNext As Long
  Dim rng As Range, rngF As Range
  Dim strFirst As String
  
  Sheets("Summe").Range("A5:A" & Rows.Count).EntireRow.Clear
  
  
  For lngIndex = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(lngIndex) Then
      With Sheets(ListBox1.List(lngIndex))
        Set rng = .Columns(2).Find(What:="OUT", LookAt:=xlWhole, LookIn:=xlValues, After:=.Cells(1, 2))
        If Not rng Is Nothing Then
          strFirst = rng.Address
          Do
            If rngF Is Nothing Then
              Set rngF = .Range(.Cells(rng.Row, 1), .Cells(rng.Row, .Columns.Count - 1))
            Else
              Set rngF = Union(rngF, .Range(.Cells(rng.Row, 1), .Cells(rng.Row, .Columns.Count - 1)))
            End If
            Set rng = .Columns(2).FindNext(rng)
          Loop While Not rng Is Nothing And rng.Address <> strFirst
        End If
      End With
      If Not rngF Is Nothing Then
        With Sheets("Summe")
          lngNext = Application.Max(5, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
          rngF.Copy .Cells(lngNext, 2)
          .Range(.Cells(lngNext, 1), .Cells(.Cells(.Rows.Count, 3).End(xlUp).Row, 1)) = rngF.Parent.Name
        End With
      End If
      Set rng = Nothing
      Set rngF = Nothing
    End If
  Next
  
  Unload Me
End Sub


Gruß Sepp

Anzeige
Supi, vielen Dank. owT
16.02.2011 12:45:25
Jockel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige