Clever-Excel-Forum

Normale Version: Daten aus verschiedenen Dateien in einer "Masterdatei" summieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Danke dafür! Das gibt es nicht, daher ist es eine super Lösung.

Nun noch ein anderes kleines Problem: Das Arbeitsblatt "Kostenstellen Summary" hat nicht, wie von mir im Basis-Beispiel angegeben nur Zahlen, sondern darüber hinaus auch Text. Eine Kostenstelle sieht z.B. so aus:

1001 - Vorstand - Vorstandssitzung

Falls dies eine wichtige Information ist: Die Zelle holt sich die Information wie sie heisst wiederrum über ein Kostenstellenübersichtsblatt.

Aus Datenschutzgründen darf ich leider nicht das komplette Arbeitsblatt teilen. Aus diesem Grund habe ich das tatsächliche (mit ca. 100 Kostenstellen) verkürzt und hier angehängt.

Ich hab mich schon an ein paar "If-Formeln" versucht, allerdings bisher erfolglos. Welche "If-Formel" wäre für den Code die Richtige?
Hallo,

PHP-Code:
Sub prcEinlesen()
  Dim objDic As Object
  Dim lngC 
As LonglngLastRow As LonglngA As Long
  Dim strNächsteMappe 
As String
  Dim vntSpalten 
As VariantvntItem As Variant
  
  
'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 stehtnach 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(lngCvntSpalten(lngA)).Value) = objDic(.Cells(lngCvntSpalten(lngA)).Value) + WorksheetFunction.Sum(.Cells(lngCvntSpalten(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
      Cells(lngC, 1).Value = vntItem
      Cells(lngC, 2).Value = objDic(vntItem)
      lngC = lngC + 1
  Next vntItem
End Sub 
Ein riesen DANKE Steffl!

Nun glaube ich wirklich die letzte Frage zu haben: Wie kann ich diesen Code schnippsel so umschreiben, dass z.B. auch Excel-Dateien mit anderen Prefix wie z.B. "dmu", "dkv" oder "dde" eingelesen werden können?

strNächsteMappe = Dir(ThisWorkbook.Path & "\dmu*.*xls*"
Hallo Leo,

(12.05.2020, 07:37)gadgetsz schrieb: [ -> ]Wie kann ich diesen Code schnippsel so umschreiben, dass z.B. auch Excel-Dateien mit anderen Prefix wie z.B. "dmu", "dkv" oder "dde" eingelesen werden können?

es kommt halt darauf an, welche Dateien in deinem Verzeichnis sind. Wenn es nur Rapporte sind und die die Endung .xlsx haben, könntest Du es so versuchen

PHP-Code:
strNächsteMappe Dir(ThisWorkbook.Path "\*.xlsx" 

Sind noch andere Dateien drin, musst Du es anders anhaben.
Hallo Steffl,

ich habe nun ein neues "Kostenstellenblatt" bei welchem die Arbeitsstunden bei Spalte E und der Lohn bei Spalte H ist. Kostenstelle ist immernoch bei Spalte B. Wie kann man das in dem Code von damals anpassen?
Hallo Leo,

in den Tabellen von damals waren zwei Tabellen (Kostenstellen in den Spalten B und H) drin. Ist dem nicht mehr so?
Lieber Steffl,

ich habe gerade mal das neue Kostenstellenblatt mit einigen Daten und Pseudo-Namen gefüllt. Im Anhang findest du dieses. Wäre es dir vlt. möglich, mir kurz zu erklären, wie ich den Code für dieses Blatt abändern kann welches sich nur strukturell etwas geändert hat?
Hallo,

(15.07.2020, 14:33)gadgetsz schrieb: [ -> ]ich habe gerade mal das neue Kostenstellenblatt mit einigen Daten und Pseudo-Namen gefüllt.

Für mich ist das nur eine Zusammenstellung, wo ich keinerlei Namen sehe.
Das ist richtig. Was vorher eine Verkettung von verschiedenen Zellen war, habe ich jetzt einfach auf 3 Spalten aufgeteilt. Es würde aber genügen, wenn bei dem Summary die erste Zelle mit den Kostenstellennummern abgefragt und die Summe bei zusammengefasst würde. Sprich so:

Spalte B abfragen
Spalte E und F zusammenzählen
Hallo,

und wie sehen deine Rapportzettel aus? Mit Verkettung oder Aufteilung auf drei Spalten? Und gibt es da eine zweite Spalte für die unbezahlten Stunden?
Seiten: 1 2 3