Live-Forum - Die aktuellen Beiträge
Datum
Titel
25.06.2024 22:07:02
25.06.2024 21:01:55
25.06.2024 19:21:44
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SumProduct mit Bereichsnamen in VBA anwenden

SumProduct mit Bereichsnamen in VBA anwenden
Mike
Hallo,
ich möchte eine Matrixformel in VBA anwenden, wobei Region, Konzern und Status Breichsnamen sind.
Beispiel:
=SUMMENPRODUKT((Region="N01")*(Konzern="Metro")*(Status="1-offen"))

Wer kann mir helfen?
Vielen Dank!
Mike

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
SumProduct nicht direkt in VBA
03.10.2009 17:30:08
Erich
Hallo Mike,
schau mal hier: https://www.herber.de/forum/archiv/680to684/t682601.htm
und hier:

Sub tst()
MsgBox Evaluate("=SUMPRODUCT((Region = ""N01"") * (Konzern = ""Metro"")" & _
" * (Status = ""1-offen""))")
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: SumProduct nicht direkt in VBA
03.10.2009 19:33:01
Mike
Hallo Erich,
es funktioniert perfekt! Wie sieht die Zeile jedoch aus, wenn ich anstatt Bereichsnamen,
Range-Variablen definiert habe und diese für Region, Konzern und Status verwenden möchte?
Vielen Dank!
Grüsse aus Kölle :-)
Anzeige
SumProduct mit Evaluate
03.10.2009 19:50:06
Erich
Hi Mike,
das hier läuft auch alles (die Dollarzeichen für absolute Adressierung
wirst du beim Evaluate aber kaum brauchen):

Sub tst()
MsgBox Evaluate("=SUMPRODUCT((Region=""N01"")*(Konzern=""Metro"")" & _
"*(Status=""1-offen""))")
MsgBox Evaluate("=SUMPRODUCT((A17:A26=""N01"")*(C1:C10=""Metro"")" & _
"*(M2:M11=""1-offen""))")
MsgBox Evaluate("=SUMPRODUCT((A$17:A$26=""N01"")*(C1:C10=""Metro"")" & _
"*($M2:$M11=""1-offen""))")
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: SumProduct mit Evaluate
03.10.2009 20:01:40
Mike
Hi Erich,
nochmals danke, aber ich meinte es so...
Function SumProd(sRegion As String, sKonzern As String, sStatus As String)
Dim rRegion  As Range
Dim rKonzern As Range
Dim rStatus  As Range
Dim vErgebnis
With ActiveWorkbook.Worksheets("Wartungen HE09")
Set rRegion = .Range("D5:D8000")
Set rKonzern = .Range("B5:B8000")
Set rStatus = .Range("I5:I8000")
End With
SumProd = Evaluate("=SUMPRODUCT((" & rRegion & " = " & sRegion & ") * (" & rKonzern & " = " & _
sKonzern & ") * (" & rStatus & " = " & sStatus & "))")
End Function
Leider erhalte ich eine Fehlermeldung 'Typen unverträglich' :-(
Anzeige
rRegion.Address usw.
03.10.2009 21:00:16
Erich
Hi Mike,
hier zwei Möglichkeiten, die hoffentlich dasselbe Ergebnis bringen:

Function SumProd(sRegion As String, sKonzern As String, sStatus As String)
SumProd = Evaluate("=SUMPRODUCT(('Wartungen HE09'!D5:D8000=""" & sRegion & """)" & _
" * ('Wartungen HE09'!B5:B8000" & "=""" & sKonzern & """)" & _
" * ('Wartungen HE09'!I5:I8000=""" & sStatus & """))")
End Function
Function SumProdR(sRegion As String, sKonzern As String, sStatus As String)
Dim rRegion  As Range, strReg As String
Dim rKonzern As Range, strKon As String
Dim rStatus  As Range, strSta As String
With ActiveWorkbook.Worksheets("Wartungen HE09")
Set rRegion = .Range("D5:D8000")
Set rKonzern = .Range("B5:B8000")
Set rStatus = .Range("I5:I8000")
strReg = "'" & .Name & "'!" & rRegion.Address(0, 0)
strKon = "'" & .Name & "'!" & rKonzern.Address(0, 0)
strSta = "'" & .Name & "'!" & rStatus.Address(0, 0)
End With
SumProdR = Evaluate("=SUMPRODUCT((" & strReg & "=" & sRegion & ") * (" & _
strKon & "=" & sKonzern & ") * (" & _
strSta & "=" & sStatus & "))")
End Function
Bei deinem Ansatz mit "...((" & rRegion & " = " & ... wird versucht,
den Inhalt der Variablen rRegion als Text mit den Texten davor und dahi8nter zu verketten.
Das geht nicht - rRegion ist ein Range und besteht aus vielen Zellen, da kann nicht einfach Value
als Standardeigenschaft verwendet werden wie bei einer einzelnen Zelle.
Evaluate kann man sich so vorstellen, dass Excel mit einer Zeichenkette (in Gänsefüßen) aufgerufen wird
mit dem Auftrag, diese Zeichenkette auszuwerten.
Der Ausdruck, den Excel hier bekommen soll, ist eine SUMMENPRODUKT-Formel, in der stehen Bereiche
nicht als Objekte, sondern mit ihren Adressen (z. B. A1:A15).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
...oder als Matrixkonstanten(text)! Gruß owT
03.10.2009 21:50:22
Luc:-?
:-?

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige