AW: summewenn über mehrere Tabellen
01.07.2006 11:34:13
=Peter=
Hallo Peter,
versuch es mal so:
Kopiere die folgende Funktion in ein Modul der Mappe, dann steht sie dir im Funktions-Assistenten unter 'Benutzerdefiniert' zur Verfügung.
Beispiel: Wenn in Spalte A ein x in der Zelle steht dann soll der Wert in Spalte B addiert werden.
=SUMMEWENNTabellen("Tabelle1";"Tabelle3";A1:A10;"x";B1:B10)
wobei 'Tabelle1' das erste und 'Tabelle3' das letzte zu berechnene Tabellenblatt darstellt. Die dazwischenliegenden werden automatisch berücksichtigt. Du kannst also auch einzelne Blätter ausnehmen, indem Du sie ausserhalb dieses Bereiches ziehst.
Public
Function SummeWennTabellen(Tab1 As String, _
Tab2 As String, _
Bereich As Range, _
Suchkriterium As String, _
Optional Summe_Bereich As Range) As Double
'© Thomas Ramel / 30.05.2003, ergänzt: 11.12.2004
'Funktion zur Anwendung von SUMMEWENN() über mehrere Tabellenblätter
'Mit angegeben werden die Tabellenblattnamen von...bis,
'sowie die üblichen Parameter für SUMMEWENN()
'Zur automatischen Aktualisierung im Tabellenblatt den folgenden Term
'anhängen: +(0*JETZT()) und F9 drücken um zu aktualisieren
'Also z.B. wie folgt: SummeWennTabellen("Tab1";"Tab8";A1:A10;A1;B1:B10)+(0*JETZT())
Dim intI As Integer
Dim intJ As Integer
Dim intTab As Integer
Dim Summe As Double
If Suchkriterium = "" Then
SummeWennTabellen = 0
Exit Function
End If
If Summe_Bereich Is Nothing Then Set Summe_Bereich = Bereich
intI = Worksheets(Tab1).Index
intJ = Worksheets(Tab2).Index
For intTab = intI To intJ
Set Bereich = ActiveWorkbook.Worksheets(intTab) _
.Range(Bereich.Address)
Set Summe_Bereich = ActiveWorkbook.Worksheets(intTab). _
Range(Summe_Bereich.Address)
Summe = Summe + Application.WorksheetFunction.SumIf _
(Bereich, Suchkriterium, Summe_Bereich)
Next intTab
SummeWennTabellen = Summe
End Function
HTH
Gruss
Peter