21.07.2020, 12:59
21.07.2020, 13:42
Hallo,
ich stelle den Thread offen.
ich stelle den Thread offen.
21.07.2020, 14:21
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.
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.
21.07.2020, 18:10
Hallo,
ungetestet
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