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

Summenformel auf VBA umschreiben

Summenformel auf VBA umschreiben
Martin
Hallo,
folgende Formel möchte ich gerne für VBA schreiben:
=SUMMENPRODUKT((Geschlecht=A2)*(Endzeit<B2))+1
So geht es mit VBA:
MsgBox [SumProduct((Geschlecht = A2) * (Endzeit MsgBox Evaluate("SumProduct((Geschlecht = A2) * (Endzeit ("Geschlecht" und "Endzeit" sind benannte Zellenbereiche.)
Jedoch möchte ich die Zellen (im Augenblick die Zellen A2 und B2) per Makro festlegen, das habe ich aber nicht hinbekommen, da ich immer Laufzeitfehler 13 "Typen unverträglich" erhalte:
Sub Test()
MsgBox WorksheetFunction.SumProduct((Range("Geschlecht") = ActiveCell.EntireRow.Range("A2") _
) * (Range("Endzeit") 
Hat vielleicht jemand eine Lösung?
AW: Summenformel auf VBA umschreiben
07.10.2009 19:33:12
Wolfgang
Hallo Martin
Zeichne mit dem MakroRecorder auf.
Formel in der Eingabezeile Kopieren und wieder in der Eingabezeile einfügen.
In der Makro Aufzeichnung ist der Code dargestellt.
gruß Wolfgang
AW: Summenformel auf VBA umschreiben
07.10.2009 19:54:55
Martin
Hallo Wolfgang,
vielen Dank für Deine Antwort. Ich glaube aber, dass Du mich falsch verstanden hast. Ich habe eine funktionierende VBA-Variante für die Berechnung des Summenproduktes:
Sub Beispiel1
MsgBox [SumProduct((Geschlecht = A2) * (Endzeit 
bzw.
Sub Beispiel2
MsgBox Evaluate("SumProduct((Geschlecht = A2) * (Endzeit 

Geschlecht und Endzeit sind jeweils benannte Zellenbereiche. Es geht jetzt aber darum, dass ich die in der Formel enthaltenen Zellen (A2 und B2) mit VBA als Range und Cells angeben möchte.
Viele Grüße
Martin
Anzeige
AW: Summenformel auf VBA umschreiben
07.10.2009 20:08:37
Wolfgang
Hallo Martin
Ich habe sehr viele Formeln mit dieser Variant die ich Dir genannt habe
in VBA Schreibweise erstellt.
Ich dachte halt das wars.
damit ist die Frage noch offen
gruß wolfgang
AW: Summenformel auf VBA umschreiben
07.10.2009 20:12:46
robert
hi,
für A2
Range("A2") oder Cells(2,1)
meinst du das ?
gruß
robert
AW: Summenformel auf VBA umschreiben
07.10.2009 20:18:32
Martin
Hallo Robert,
genau das wäre mein Wunsch. Aber ich bekomme es nicht hin. Hast Du eine Lösung?
Viele Grüße
Martin
Du musst die Adresse der Bereiche in die...
08.10.2009 01:15:00
Luc:-?
...zu evaluierende Fml einfügen, Martin,
also Range("A2").Address [evtl mit Parametern (0, 0)], wie es auch in der fktd Form zu sehen ist, sonst wird das nie was, denn du übergibst anderenfalls die Werte direkt an die Fml und das führt zum Fehler, weil so etwas in VBA nicht möglich ist. Man kann Werte in einen zu evaluierenden FmlText nur als Matrixkonstante in Textform engl Notation einfügen, also bspw so: "{1,2,3;4,5,6}"
Und das müsstest du erst mal aus den Bereichen erzeugen, denn VBA macht so etwas nicht automatisch.
Auch die direkte Variante ohne Evaluate, also WorksheetFunction.SumProduct(...) fkt nicht immer. Evtl verspricht bei Letzterem die Bereichsübergabe als Range(...).Value2 (Default bei Weglassung ist .Value!) sichereren Erfolg, aber das weiß ich nicht; schneller soll es jedenfalls sein.
Falls es nur darum gehen sollte, den Bereich leichter ändern zu können bzw dynamisch zu gestalten, würde ich im 1.Fall die Adresse als Const bezug As String = "A2" am PgmAnfang deklarieren und dann im FmlText mit bezug arbeiten bzw im 2.Fall einen Bereichs­namen vergeben, der dann auch einfach in den FmlText eingefügt wdn kann.
Gruß Luc :-?
Anzeige
Danke, habe eine Lösung gefunden
08.10.2009 15:38:58
Martin
Vielen Dank, besonders an Luc
Es scheint, als ob das Problem nun gelöst ist:
Sub Summenformel()
MsgBox Evaluate("SumProduct((Geschlecht = " & Range("A2").Address & ") * (Endzeit 
Falls es einen "schöneren" Lösungsweg gibt, wäre ich für Vorschläge dankbar!
Viele Grüße
Martin
Danke, aber in diesem Fall könntest du...
09.10.2009 04:53:46
Luc:-?
...auch gleich nur mit der reinen Adresse arbeiten, Martin,
denn bei Range("A2").Address kommt auch nur der Text $A$2 heraus [bei Range("A2").Address(0, 0) wäre es A2]! Sinn macht Range nur, wenn er variabel sein soll, bspw durch einen PgmZyklus mit Laufvariable als Range.
Gruß Luc :-?
Anzeige
...ich arbeite variabel....
09.10.2009 07:40:11
Martin
Hallo Luc,
vielen Dank für den Hinweis. Ich wollte nur erst einmal prinzipiell ausprobieren, wie es geht. Da ich bei der Zelle A2 das Ergebnis wusste, hatte ich den Wert vorerst absolut angegeben. Ich arbeite aber variabel. Mein richtiger Code lautet:
Sub Summenformel()
MsgBox Evaluate("SumProduct((NameAK = " & Cells(ActiveCell.EntireRow.Row, [NameAK].Column). _
Address & ") * (Endzeit 
Viele Grüße
Martin
Na, dann isset ja jut... ;-) Gruß owT
09.10.2009 09:12:51
Luc:-?
:-?

167 Forumthreads zu ähnlichen Themen


Hi Leute,
heute möchte ich eine Frage stellen die mich schon eine Zeit lang beschäftigt, für die ich aber leider selber noch keine Antwort gefunden habe.
Ich habe ein Registerblatt in dem einige "Summen-Formeln" stehen, die auf Zellbeüge in anderen Registerblättern (alle in der selben A...
Anzeige

Hallo guten Abend,
ich habe folgendes Problem. Ich habe eine Stundenübersicht. In der Stundenübersicht habe ich wie ihr in der Formel seht im Format 00:00 Die Stunden zusammen gezählt. Wenn ich jetzt aber die Wochenstunden zusammenzählen möchte für Monatsabrechung kommt iergent ein wirres Z...

Hallo,
ich will von Zeile 10 die ganze Spalte aufsummieren. bis Zeile 9 sind die Zeilen gesperrt.
Meine Formel lautet: =Summe(A10:A65000)
Problem nun, wenn ich in diesem Bereich eine Zeile lösche wird aus 65000 - 64999. Gibts da was, wie man das verhindern kann und es bei 65000 ble...
Anzeige

Hallo Liebe VBA Profis,
Ich hätte hier ein Excel Problem, welches wahrscheinlich auch schon öfter besprochen wurde, leider finde ich dazu nichts. Ich bin also auch für links super dankbar.!!!
Sachverhalt:
Gegeben ist ein Datensatz welcher durch eine Abteilungskennziffer in der erste...

Hallo und einen schönen guten Abend!
Habe folgendes Problem:
Ich möchte in einer Zeile Zellen addieren, z.B. Summe(a10:a15). Dabei kenne ich den Namen der letzen Zelle (A15), die 1.Zelle (a10) soll errechnet werden durch eine Variable ( also hier 5 Spalten zurück)
Gibt es dafür ein...

Guten Tag
Ich möchte mit VBA eine Summenformel einfügen.
Selektiert ist irgend eine Zelle in der Spalte H (z.B. H35).
Nun möchte ich in Zelle H35 eine Summenformel einfügen, die den Bereich von H2 bis H34 berücksichtigt.
Wenn H100 selektiert ist, soll die Summenformel H2 bis H99...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige