Daten aus verschiedenen Dateien in einer "Masterdatei" summieren
#21
Hi! Das was ich dir geschickt habe, ist die Rapportdatei bzw. ein Blatt daraus, welches die Summe(n) des Rapportes bildet.
Top
#22
Hallo,

ich stelle den Thread offen.
Gruß Stefan
Win 10 / Office 2016
Top
#23
Ich glaube ich habe mit meinen vorherigen Nachrichten einfach verwirrt. Entschuldige.

Ich möchte lediglich wissen, wie man im von dir geschriebenen Code die "Such-" und "Summen"-Spalte ändert.

Es funktioniert wahrscheinlich ähnlich wie die Formel SUMMEWENN oder? Nur ist mir eben nicht klar, wie man den Code umschreibt und damit andere Spalten definiert.
Top
#24
Hallo,

ungetestet
Code:
Sub prcEinlesen()
  Dim objDic As Object
  Dim lngC As Long, lngLastRow As Long, lngA As Long
  Dim strN?chsteMappe As String
  Dim vntSpalten As Variant, vntItem As Variant
  Dim rngTreffer As Range
 
  'die Spalten in denen die Kostenstellen stehen (hier Spalte B u. H)
  vntSpalten = Array(2, 8)
  Set objDic = CreateObject("scripting.dictionary")
  'gesucht wird in dem Verzeichnis in der die Masterdatei steht, nach Dateien, die mit dmu beginnen
  strN?chsteMappe = Dir(ThisWorkbook.Path & "\dmu*.*xls*")
  Do While strN?chsteMappe <> ""
      'die entsprechenden Dateien werden ge?ffnet
      Workbooks.Open ThisWorkbook.Path & "\" & strN?chsteMappe
      With ActiveWorkbook
        With .Worksheets("Kostenstellen Summary")
            For lngA = 0 To UBound(vntSpalten)
              For lngC = 3 To .Cells(.Rows.Count, vntSpalten(lngA)).End(xlUp).Row
                    'wird die Kostenstelle und der Betrag eingelesen
                  objDic(.Cells(lngC, vntSpalten(lngA)).Value) = objDic(.Cells(lngC, vntSpalten(lngA)).Value) + WorksheetFunction.Sum(.Cells(lngC, vntSpalten(lngA) + 3).Resize(, 2).Value)
              Next lngC
            Next lngA
        End With
      .Close False
      End With
      strN?chsteMappe = Dir()
  Loop
 
'  lngC = 1
  'Ausgabe des Dictionary
  For Each vntItem In objDic.keys
      Set rngTreffer = ActiveSheet.Columns(2).Find(vntItem, LookIn:=xlValues, lookat:=xlWhole)
      If Not rngTreffer Is Nothing Then
        rngTreffer.Offset(, 3).Value = objDic(vntItem)
      End If
  Next vntItem
End Sub
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste