Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten aus verschiedenen Dateien in einer "Masterdatei" summieren
#11
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?


Angehängte Dateien
.xlsx   dmu_gerlinde.musterfrau_19_09-10.xlsx (Größe: 25,89 KB / Downloads: 3)
.xlsx   dmu_gerlinde.musterfrau_19_10-11.xlsx (Größe: 25,89 KB / Downloads: 2)
.xlsx   dmu_max.mustermann_19_09-10.xlsx (Größe: 25,89 KB / Downloads: 1)
.xlsx   dmu_max.mustermann_19_10-11.xlsx (Größe: 25,89 KB / Downloads: 0)
Antworten Top
#12
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 
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • gadgetsz
Antworten Top
#13
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*"
Antworten Top
#14
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.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#15
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?
Antworten Top
#16
Hallo Leo,

in den Tabellen von damals waren zwei Tabellen (Kostenstellen in den Spalten B und H) drin. Ist dem nicht mehr so?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#17
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?


Angehängte Dateien
.xlsx   Neuer Rapport.xlsx (Größe: 123,25 KB / Downloads: 4)
Antworten Top
#18
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.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#19
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
Antworten Top
#20
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?
Gruß Stefan
Win 10 / Office 2016
Antworten Top


Gehe zu:


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