Eine Möglichkeit wäre die Verwendung einer VBA-Funktion, die Sie in einer Formel aufrufen können. Die folgende Funktion gibt den Inhalt einer Zellenadresse (dies funktioniert nicht für Bereiche in ihrer aktuellen Form) über alle Arbeitsblätter außer der aktiven Tabelle zurück.
Public Function AcrossSheets(rngAddress As String, Optional includeThisSheet As Boolean = False, Optional wText As String) As Variant Application.Volatile Dim tmpResults As String, ws As Worksheet If includeThisSheet Then For Each ws In Worksheets If wText <> "" Then If InStr(ws.Name, wText) <> 0 Then tmpResults = tmpResults & ws.Range(rngAddress).Value & ", " End If Else tmpResults = tmpResults & ws.Range(rngAddress).Value & ", " End If Next ws Else For Each ws In Worksheets If ws.Name <> ActiveSheet.Name Then If wText <> "" Then If InStr(ws.Name, wText) <> 0 Then tmpResults = tmpResults & ws.Range(rngAddress).Value & ", " End If Else tmpResults = tmpResults & ws.Range(rngAddress).Value & ", " End If End If Next ws End If tmpResults = Left(tmpResults, Len(tmpResults) - 2) AcrossSheets = Split(tmpResults, ", ") End Function
Um diesen Code zu verwenden, drücken Sie in Excel Alt+ F11, fügen ein neues Modul ein und fügen den Code ein.
Wenn Sie beispielsweise die Werte B2
von jedem Blatt außer dem aktiven Blatt summieren möchten, verwenden Sie die folgende Matrixformel (die Sie durch Drücken von Ctrl+ Shift+ eingeben Enter):
=SUM(VALUE(AcrossSheets("B2")))
Um den Wert von B2
in das aktive Blatt aufzunehmen, verwenden Sie die Matrixformel:
=SUM(VALUE(AcrossSheets("B2",TRUE)))
B2
Verwenden Sie die Matrixformel, um nur die Werte von auf Blättern zu summieren, die "Monatlich" im Blattnamen enthalten (nicht das aktive Blatt).
=SUM(VALUE(AcrossSheets("B2",FALSE,"Monthly")))
Beachten Sie zwei Dinge:
AcrossSheets
gibt ein Array von Werten zurück. Aus diesem Grund sollte es nur in Arrayformeln verwendet werden.- Das von zurückgegebene Array
AcrossSheets
enthält Werte als Zeichenfolgen (Text). Wenn Sie erwarten, dass numerische Daten von der Funktion zurückgegeben werden (wie in den obigen Beispielen), müssen Sie den Funktionsaufruf einschließenVALUE()
. Dadurch werden die Zeichenfolgendaten in numerische Daten umgewandelt.