Hallo,
ich möchte über mehrere Tabellenblätter eine SummeWenns laufen lassen.
Mit 2 Kriterien habe ich eine funktionierende Lösung im Netz gefunden, die ich nun auf den Fall 1 Kriterien kann mir jemand helfen, warum die VBA-Funktion beim Fall:
Zeilen 30-48: Suchkriterium2 = ""
einen Fehlerwert verursacht.
Viele Grüße Olaf
-
Public Function SummeWennSTabellen(Tab1 As String, _
-
Tab2 As String, _
-
Summe_Bereich As Range, _
-
KritBereich1 As Range, _
-
Suchkriterium1 As String, _
-
KritBereich2 As Range, _
-
Suchkriterium2 As String) As Variant
-
-
Dim intI As Integer
-
Dim intJ As Integer
-
Dim intTab As Integer
-
Dim Summe As Double
-
-
If Val(Application.Version) < 12 Then
-
SummeWennSTabellen = "Nur ab xl2007 einsetzbar"
-
Exit Function
-
End If
-
-
If Suchkriterium1 = "" Then
-
-
SummeWennSTabellen = 0
-
Exit Function
-
-
End If
-
-
intI = Worksheets(Tab1).Index
-
intJ = Worksheets(Tab2).Index
-
-
-
If Suchkriterium2 = "" Then
-
-
For intTab = intI To intJ
-
-
Set KritBereich1 = ActiveWorkbook.Worksheets(intTab) _
-
.Range(KritBereich1.Address)
-
-
Set Summe_Bereich = ActiveWorkbook.Worksheets(intTab) _
-
.Range(Summe_Bereich.Address)
-
-
With Application.WorksheetFunction
-
Summe = Summe + .IfError(.SumIfs _
-
(Summe_Bereich, KritBereich1, Suchkriterium1), 0)
-
End With
-
-
Next intTab
-
-
SummeWennSTabellen = Summe
-
-
Else
-
-
For intTab = intI To intJ
-
-
Set KritBereich1 = ActiveWorkbook.Worksheets(intTab) _
-
.Range(KritBereich1.Address)
-
-
Set KritBereich2 = ActiveWorkbook.Worksheets(intTab) _
-
.Range(KritBereich2.Address)
-
-
Set Summe_Bereich = ActiveWorkbook.Worksheets(intTab) _
-
.Range(Summe_Bereich.Address)
-
-
With Application.WorksheetFunction
-
Summe = Summe + .IfError(.SumIfs _
-
(Summe_Bereich, KritBereich1, Suchkriterium1, KritBereich2, Suchkriterium2), 0)
-
End With
-
-
Next intTab
-
-
SummeWennSTabellen = Summe
-
-
End If
-
-
End Function
|