Excel mehrere Dokumente sinnvoll konsolidieren ohne VBA oder PS

schumischumi

Lt. Commander
Registriert
Dez. 2011
Beiträge
1.056
Hi,

ich müh mich gerade in excel ab und komm nicht weiter.
Ich habe mehrere einzelne Dokuemente die alle gleich aufgebaut sind, aber mit unterschiedlichen Daten.
Z.B.
Dokument 1
e1.png

Dokument 2
e2.png

Diese sollen in einem dritten zusammengefasst werden. Am besten mit aktualisierung.

Zielbild:
e3.png

Mit SVerweis wärs einmal ein riesen Aufwand und zweitens kann ich keine Schleife abbilden.
Mit der Konsolidieren Funktion will er automatich auch immer gleich Daten berechnen (Summe oä), allerdings will ich die einzelnen Zeilen einfach nur stupide untereinander schreiben.
Mit VBA/Makros oder Powershell bekomm ich es zwar hin, aber ist halt ein gefrickel und schlecht zu pflegen. Boardmittel wären hier schon sehr schön.

Habt ihr ne Idee?
 
Das ist einer dieser Anwendungsfälle der nicht mit Excel sondern mittels einer vernünftigen Datenbank gelöst werden sollte. Zur Not vielleicht auch noch mit Access (vorzugsweise nur als Frontend). Wir dürfen uns bald täglich mit irgendwelchen selbstgebauten Excellösungen von unseren Abteilungen rumärgern weil wieder was nicht funktioniert und die IT danach schauen soll. Wenn Excel gesetzt ist, wirst du kaum um VBA oder Makros herum kommen.
 
Kombination aus INDEX und VERGLEICH.
 
@charmin: du hast natürlich vollkommen recht. eine datenbank wäre hier sinnvoller und flexibler, aber man muss halt mit dem arbeiten was man hat...

@brudertuck: haste n beispiel oder tutorial für mich?
 
Nicht bei der Hand. Gibts aber genug bei Google. Die Kombi ist üblich. Schafft quasi einen sverweis mit zweitem Suchkriterium.
 
so hatte es jetzt mit Makro gelöst.
Betonung auf "hatte". Bei einem Loop vergessen den Counter hochzusetzen und rein in die Endlosschleife...
Nix gespeichert alles weg.

Denke das Thema hat sich somit erledigt und ich machs einfach nochmal mit Makro. Danke euch. Evtl. ergänze ich das Makro nochmal hier unten für den nächsten suchenden.

Update:
Hier das Makro
Code:
Sub Konsolidieren()
    Dim Quelle As Object, Ziel As Object, ZielFiles As Object
    Dim cGlobal As Long
    Dim cCells As Long
    Dim cFiles As Long
    Dim rangeS As String
    Dim rangeD As String
    Dim noFiles As Long
    Dim noCells As Long
    Dim cleaned As Long
    Dim ccleaned As Long
    Dim path As String
    
    
    
     


    Set Ziel = ThisWorkbook.Worksheets("Sheet1")
    Set ZielFiles = ThisWorkbook.Worksheets("dateien")
    noFiles = 0
    cGlobal = 4
    cFiles = 1
    ccleaned = 4
    cleaned = 0
    
    Do
        If Ziel.Cells(4, 1).Value = "" Then
            cleaned = 1
		Else

            Ziel.Rows(4).Delete xlShiftUp
            ccleaned = ccleaned + 1
        End If
    
    Loop Until cleaned > 0
    
    Application.Wait Now + TimeSerial(0, 0, 10)
    
    Do
        path = ZielFiles.Cells(cFiles, 1).Value
        If path = "" Then
            noFiles = 1
        Else
            Set Quelle = Workbooks.Open(Filename:=path)
            cCells = 4
            noCells = 0
            Do
                If Quelle.Worksheets("Sheet1").Cells(cCells, 1).Value = "" Then
                    noCells = 1
                Else
                    For Each MyName In Ziel.Names
                        MyName.Delete
                    Next MyName
                    rangeS = "A" & cCells & ":CF" & cCells
                    rangeD = "A" & cGlobal & ":CF" & cGlobal
                    Quelle.Worksheets("Sheet1").Range(rangeS).Copy
                    For Each MyName In Ziel.Names
                        MyName.Delete
                    Next MyName
                    Ziel.Range(rangeD).PasteSpecial Paste:=xlPasteAll
                    For Each nName In Ziel.Names
                        If InStr(1, nName.Name, "myNames") > 0 Then
                            nName.Delete
                        End If
                    Next nName
                    For Each nName In ThisWorkbook.Names
                        If InStr(1, nName.Name, "myNames") > 0 Then
                            nName.Delete
                        End If
                    Next nName
                    cCells = cCells + 1
                    cGlobal = cGlobal + 1
                End If
                For Each MyName In Ziel.Names
                    MyName.Delete
                Next MyName
            Loop Until noCells > 0
            Quelle.Close
        End If
        cFiles = cFiles + 1
    Loop Until noFiles > 0

     

End Sub
 
Zuletzt bearbeitet:
Zurück
Oben