Registriert seit: 30.10.2019
Version(en): Office 16
Hi! Das was ich dir geschickt habe, ist die Rapportdatei bzw. ein Blatt daraus, welches die Summe(n) des Rapportes bildet.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
ich stelle den Thread offen.
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 30.10.2019
Version(en): Office 16
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.
Registriert seit: 11.04.2014
Version(en): Office 2007
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