Ich habe eine Arbeitsmappe, die einen wöchentlichen Bericht ist. Am Ende der Woche wird es 8 Arbeitsblätter enthalten, eines für jeden Wochentag und ein 8., das die Werte für die ganze Woche anzeigt. Arbeitsblätter: Mo, Di, Mi, Do, Fr, Sa, So, WocheExcel VBA - Summenwerte über Arbeitsblätter
Jedes Arbeitsblatt hat dasselbe Format und wird aus einem Vorlagenblatt kopiert.
Um die Dinge einfach zu halten, habe ich dies auf eine Zelle B12 gekocht.
B12 auf der worksheeet "Woche" muss gleich:!!!!! = Mo B12 + Di B12 + Mi B12 + Thur B12 + Fr B12 + Sa B12 + Sun B12
Ich war Verwenden Sie VBA, um die obige Formel in Zelle B12 des Arbeitsblatts "Woche" einzufügen, aber ich habe ein paar Probleme:
1) Nicht alle Tagesblätter existieren, zum Beispiel, wenn ich den Bericht nur am Mittwoch ausführen "Mon" und "Di" werden existieren. Wenn ich den Bericht am Samstag starte, gibt es "Mon", "Di", "Mi", "Do" und "Fr". Das bedeutet, dass ich die obige Formel nicht einfach in Zelle B12 von "Woche" einfügen kann, weil ich ein #REF bekomme! Fehler aufgrund von Blättern, die nicht existieren.
Ich brauche daher einen Code, der alle B12-Werte eines der 7 Tagesblätter addiert, aber nur wenn dieses Blatt existiert.
SO, wenn ich den Bericht am Mittwoch, führen Sie es gleich: = Mo B12 + Di B12
Wenn ich den Bericht am Samstag führen Sie es gleich:! = Mo B12 + Di B12 + Mi!! B12 + Thur! B12 + Fr! B12
2) Mein zweites Problem ist, dass dies nicht nur für Zelle B12 gilt, sondern auch für weitere 100 Zellen und sie sind nicht alle in einem Bereich, sie sind verteilt aus, und einige sind verschmolzene Zellen usw. Während ich über B12 spreche, um diesen Beitrag zu vereinfachen, möchte ich leicht in der Lage sein, eine Lösung für viele andere Zellen anzuwenden, ohne Hunderte von if-Anweisungen usw. schreiben zu müssen.
Hoffentlich macht das Sinn. Dies ist
wo ich habe so weit, aber es funktioniert nicht:
Sub test()
Dim ws As Worksheet
Dim testVar As Double
Dim wsName As String
wsName = ws.Name
For Each ws In ActiveWorkbook.Worksheets
Select Case wsName
Case "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun"
testVar = testVar + Worksheets(wsName).Range("B12").Value
End Select
Next ws
Worksheets("Week").Range("B12").Value = testVar
End Sub
Prost
'wsname = ws.Name' muss innerhalb der Schleife nicht vor sein. –
Warum fangen Sie nicht einfach mit einem leeren Blatt für jeden Tag an und fügen Sie die Daten wie empfangen ein. Dann brauchst du nur: '= SUM ('Mo: So'! B12)' als deine Formel. – Rory
@ Scott Craner einfach so das eh? :-) Danke, es funktioniert jetzt. – megatron77