Live-Forum - Die aktuellen Beiträge
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
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


Hallo Leute,
ich habe versucht, folgende "SummenProdukt" Formel:
=SUMMENPRODUKT((A1:A1000=A27)*(C1:C1000=C27);U1:U1000)
ins VBA zu übersetzen:
WorksheetFunction.SumProduct((Range("A1:A1000") = Range("A" & EEE)) * (Range("C1:C1000") = Range("C" & EEE)), Range("U1:U1000"))...
Anzeige

Hallo zusammen
Leider habe ich sehr wenig Ahnung von VBA und probiere gerade eine Formel hinzubekommen. Sehr wahrscheinlich ist es für andere einfach, daher bitte ich um Rat.
Ich habe eine Spalte mit Zahlen (B2:B16).
Abgesehen von dieser Spalte habe ich zwei weitere Variablen: t und...

hallo zusammen,
ich würde gerne per makro die letzten beiden beschriebenen zellen der spalte h löschen?
würde mich freuenn, wenn mir das jemand kurz aufschreiben könnte.
danke und viel grüße kai
Anzeige

Hallo zusammen,
bin neu hier und hätte eine Frage bezüglich der Berechnung einer Summe. Folgendes Szenario: Ich möchte in B1 eine Summe berechnen aus Werten der B Spalte. Soweit klar! Die einzelnen Werte in Spalte B werden in jeder Zeile mit einem Wert aus der A Spalte "nebenan" berechnet....

Hallo VBA-Profis!
Leider wurde ich trotz Recherche nicht mehr fündig. Dieses "mein" Problem wurde in diesem Forum schon behandelt (finde es aber nicht mehr)!
Folgende Aufgabe (Bitte): In Spalte "A" stehen Belegnummern (od ähnliches), es soll nach Ende einer Produktgruppe eine Leezeile e...

Hallo,
nicht, das ich jetzt schon wieder ein Problem hätte... Nun denn. Ich nutze eine Prozedur, um je nach Wochentag eine vorgegebene Stundenzahl (Mo-Do = 8:00 Std, Fr = 7:00 Std, Sa = 0:00 Std, So = 0:00 Std) in den Zellen "D9:D39" auszugeben. Soweit klappt das noch.
Jetzt aber beste...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige