Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1184to1188
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

EXCEL 2010 - Wiedergabe ganzer Datensätze

EXCEL 2010 - Wiedergabe ganzer Datensätze
Sandra
Hallo zusammen,
ich habe mal wieder ein Problem. Dieses möchte ich, wenn es denn geht, ohne VBA sondern nur mit Formeln lösen. Hoffentlich könnt Ihr mir helfen.
Hier mein Problem:
Ich habe eine Arbeitsmappe mit ganz vielen verschiedenen Tabellenblättern. Die Anzahl kann sich noch ändern. Gehen wir jetzt einfach mal von 10 Stück aus. Die Namen sind: Gesamt, und dann Whg. 1 - Whg. 9.
Ich habe in den Tabellenblättern Whg. 1 - Whg. 9 ganz viel Text. 13 Spalten und unterschiedlich viele Zeile.
Nun möchte ich gerne in dem Tabellenblatt Gesamt alle Daten wiedergeben, die ein Kriterium erfüllen.
Wenn also in der Spalte L (egal in welchem Tabellenblatt) ein nein oder gar nichts steht, dann möchte ich gerne, dass er alle Zeilen (aller Tabellenblätter) in das Tabellenblatt gesamt übernimmt.
Das ist bestimmt gar nicht so schwer, aber ich weiß mir im Moment leider nicht zu helfen.
Habt Ihr eine Idee? Ich hoffe es geht ohne Beispieldatei.
Danke & Liebe Grüße
Sandra

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Zeile in neues TB kopieren wenn Kriterium erfüllt
05.11.2010 12:44:52
Sandra
Hallo zusammen,
ich habe mal wieder ein Problem. Dieses möchte ich, wenn es denn geht, ohne VBA sondern nur mit Formeln lösen. Hoffentlich könnt Ihr mir helfen. - Wenn es nur mit VBA geht - würde ich auch diese Hilfe sehr gerne annehmen!
Hier mein Problem:
Ich habe eine Arbeitsmappe mit ganz vielen verschiedenen Tabellenblättern. Die Anzahl kann sich noch ändern. Gehen wir jetzt einfach mal von 10 Stück aus. Die Namen sind: Gesamt, und dann Whg. 1 - Whg. 9.
Ich habe in den Tabellenblättern Whg. 1 - Whg. 9 ganz viel Text. 13 Spalten und unterschiedlich viele Zeile.
Nun möchte ich gerne in dem Tabellenblatt Gesamt alle Daten wiedergeben, die ein Kriterium erfüllen.
Wenn also in der Spalte V (egal in welchem Tabellenblatt) ein "offen" steht, dann möchte ich gerne, dass er alle entsprechenden Zeilen (aller Tabellenblätter) in das Tabellenblatt Gesamt übernimmt.
Das ist bestimmt gar nicht so schwer, aber ich weiß mir im Moment leider nicht zu helfen.
Habt Ihr eine Idee? Ich hoffe es geht ohne Beispieldatei.
Danke & Liebe Grüße
Sandra
Anzeige
eine VBA Variante...
06.11.2010 19:59:27
Tino
Hallo,
kannst Du damit was anfangen?
Option Explicit

Sub Test()
Dim oSH As Worksheet, rngDaten As Range
Dim strSuchBegriff$
Dim lngNextRow As Long

strSuchBegriff = "offen"

With Sheets("Gesamt")
    'Tabelle leer machen 
    .UsedRange.Clear
    'erste einfüge Zeile 
    lngNextRow = 2
    For Each oSH In ThisWorkbook.Worksheets
        If oSH.Name Like "Whg. #" Then
            'Suche in Spalte V auf Tabelle oSh die Zellen mit dem Suchbegriff 
            Set rngDaten = SucheDaten(oSH.Columns(22), strSuchBegriff)
            If Not rngDaten Is Nothing Then 'gefunden 
                'Tabellenname schreiben und Formatieren 
                With .Cells(lngNextRow, 1)
                    .Value = oSH.Name
                    .Font.Bold = True
                End With
                For Each rngDaten In rngDaten.Areas
                    'kopiere Zeilen 
                    rngDaten.EntireRow.Copy .Cells(lngNextRow + 1, 1)
                    'Zähler für nächste Zeilen 
                    lngNextRow = lngNextRow + rngDaten.Rows.Count
                Next rngDaten
            End If
            'Zähler erhöhen um Platz zwischen Daten zu halten 
            lngNextRow = lngNextRow + 2
        End If
    Next
End With
End Sub

Function SucheDaten(rngSucheIn As Range, strSucheNach$) As Range
Dim strErste$, rngFund As Range
Set rngFund = rngSucheIn.Find(What:=strSucheNach, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

If Not rngFund Is Nothing Then
    strErste = rngFund.Address
    Set SucheDaten = rngFund
    Set rngFund = rngSucheIn.FindNext(rngFund)
    Do While strErste <> rngFund.Address
        Set SucheDaten = Union(rngFund, SucheDaten)
        Set rngFund = rngSucheIn.FindNext(rngFund)
    Loop
End If


End Function
Gruß Tino
Anzeige
AW: eine VBA Variante...
08.11.2010 07:55:50
Sandra
Guten Morgen und danke für Deine Antwort.
Ich habe diese VBA-Variante in meine Arbeitsmappe (in ein Modul) eingefügt.
Mein Tabellenblatt gesamt war von den Überschriften und Formatierungen bereits an die anderen Tabellenblätter angepasst.
Nach Ausführung des Makros war diese Tabelle leer, aber die Daten die aus den anderen Tabellenblättern auftauchen sollten, waren leider nicht da.
Muss ich den Code noch irgendwie anpassen?
Die Tabelle darf natürlich nicht komplett geleert werden. Wenn sich dass Leeren darauf bezieht, dass die Tabelle leer gemacht wird, bevor die neuen Daten abgefragt und übernommen werden, dann sollte dies erst ab Zeile 12 geschehen.
Wäre toll wenn Du mir noch etwas helfen könntest.
Vielen Dank & lieben Gruß
Sandra
Anzeige
AW: eine VBA Variante...
08.11.2010 08:02:25
Tino
Hallo,
ein Beispiel Deiner Datei wäre gut, dann könnte man schauen was anders gemacht werden muss.
Gruß Tino
AW: eine VBA Variante...
08.11.2010 08:48:28
Sandra
Moin Tino,
anbei der Link:
https://www.herber.de/bbs/user/72192.xlsm
Die Datei ist sehr verkürzt und eingestampft, aber so im Groben ist sie es.
Dein Code ist auch schon drin, habe ihn aber nicht noch einmal ausgeführt, weil ich das Gesamttabellenblatt wieder formatiert habe. Dir wird wahrscheinlich auffallen, dass das Tabellenblatt nicht Gesamt sondern offene Punkte heißt, das habe ich aber bei Deinem Code berücksichtigt.
Ich hoffe das Du mir helfen kannst.
Vielen lieben Dank!!!
Sandra
Anzeige
AW: eine VBA Variante...
08.11.2010 09:14:54
Tino
Hallo,
kannst mal testen, habe einen Button dabei gemacht auf den kannst Du drücken.

Die Datei https://www.herber.de/bbs/user/72195.xlsm wurde aus Datenschutzgründen gelöscht


Gruß Tino
AW: eine VBA Variante...
08.11.2010 09:54:43
Sandra
Das ist ja Oberaffen***** lassen wir das :)
Einfach klasse!!! Vielen Dank!
Hast Du eventuell Lust und etwas Zeit, mir das Makro etwas zu erklären? Ich würde nämlich eigentlich auch gerne verstehen, was da passiert. :)
Gruß
Sandra
sehr viele Kommentare
08.11.2010 10:35:34
Tino
Hallo,
habe mal sehr viele Kommentare dabei geschrieben, vielleicht hilft es Dir weiter.
Sub Test()
Dim oSH As Worksheet, rngDaten As Range
Dim strSuchBegriff$
Dim lngNextRow As Long
Dim iCalc As Integer

strSuchBegriff = "offen"
With Application
    'Bildschirmaktualisierung, Eventmakros ausschalten 
    'Berechnung in einer Variable merken u. auf manuell stellen 
    'Dies bewirkt das der Bildschirm nicht so flackert und das der Code stabiler u. schneller läuft 
    iCalc = .Calculation
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
    
    With Sheets("offene Punkte")
        'Tabelle leer machen ab A12 bis Ende Tabelle Spalte V 
        .Range("A12", .Cells(.Rows.Count, 22)).ClearContents
        'erste einfüge Zeile, wo die erste gefundene Zeile reinkommt. (hier Zeile 12) 
        lngNextRow = 12
        'Schleife über alle Tabellen 
        For Each oSH In ThisWorkbook.Worksheets
            'Namen der Tabelle prüfen mit Musterübereinstimmung Name muss Whg Zahl.Zahl sein 
            'siehe auch in der VBA Hilfe unter 'Like (Operator)' 
            If oSH.Name Like "Whg #.#" Then
                'Suche in Spalte V auf Tabelle oSh die Zellen mit dem Suchbegriff in strSuchBegriff 
                Set rngDaten = SucheDaten(oSH.Columns(22), strSuchBegriff)
                If Not rngDaten Is Nothing Then 'gefunden? 
                    For Each rngDaten In rngDaten.Areas 'gehe alle zusammenhängende Zellen durch 
                        'kopiere die komplette Zeilen nach offene Punkte 
                        rngDaten.EntireRow.Copy .Cells(lngNextRow, 1)
                        'Zähler für nächste Zeile 
                        lngNextRow = lngNextRow + rngDaten.Rows.Count
                    Next rngDaten
                End If
            End If
        Next
    End With
    
    'Bildschirmaktualisierung, Eventmakros wieder einschalten 
    'Berechnung auf den alten Zustand zurückstellen 
    .Calculation = iCalc
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub

Function SucheDaten(rngSucheIn As Range, strSucheNach$) As Range
Dim strErste$, rngFund As Range
'Suche Zellen mit dem Wert in strSucheNach 
Set rngFund = rngSucheIn.Find(What:=strSucheNach, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
'wurde eine Zelle gefunden? 
If Not rngFund Is Nothing Then
    'merke diese erste Adresse 
    strErste = rngFund.Address
    'speichere diese in SucheDaten 
    Set SucheDaten = rngFund
    'suche nächste mit diesem Begriff 
    Set rngFund = rngSucheIn.FindNext(rngFund)
    'Schleife bis wieder die erste gefundene gefunden wird 
    Do While strErste <> rngFund.Address
        Set SucheDaten = Union(rngFund, SucheDaten)
        Set rngFund = rngSucheIn.FindNext(rngFund)
    Loop
End If

End Function
Gruß Tino
Anzeige
AW: sehr viele Kommentare
08.11.2010 10:51:10
Sandra
Du bist Großartig!!! Vielen Dank!!!!

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige