Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Summenprodukt

Forumthread: VBA Summenprodukt

VBA Summenprodukt
26.05.2021 14:57:21
Bo
Hallo zusammen,
ich habe hier in Sheet1 eine monatlich generierte Liste, die von Monat zu Monat eine unterschiedliche Zeilenanzahl ausweist. Ich möchte hier eine Summenprodukt Formel in VBA auf Sheet2 realisieren, die einmal ein Datum ausliest und daraus den Vormonat ermittelt und dann die entsprechende Addition vornimmt. Als Excel Formel sähe das wie folgt aus:

=SUMMENPRODUKT((MONAT(A2:A10000)=MONAT(JETZT()-30))*(AE2:AE10000))
Das funktioniert prima. Damit ich das VBA technisch umgesetzt bekomme habe ich erst die Variable "Letztezeile" definiert (und lasse das Zählen) und dann versucht das in die Formel eine VBA-kompatible Formel zu packen aber ich hänge da fest - diese & und " Geschichte hab ich glaube ich noch nicht richtig verstanden. Mein Versuch sieht wie folgt aus:

Dim Letztezeile As Long
Letztezeile = Range("a"&Rows.Count).End(xlUp).Row
Range("B2").Formula= "=sumproduct((month(Sheet1!a2:a"&Letztezeile&")="=month(now()-30))"*(ae2:ae"&Letztezeile&"))"
Da meckert er und sagt Kompilierungsfehler - kann mir jemand auf die Sprünge helfen?
Danke!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Summenprodukt
26.05.2021 15:11:38
Werner
Hallo,
was soll den bitte Sheet1 sein? Ist das der Name eines Tabellenblattes? Oder willst du das erste Tabellenblatt ansprechen.
Wenn es der Blattname ist:

"=sumproduct((month(Sheet1!a2:a" & Letztezeile & ")=month(now()-30))*(ae2:ae" & Letztezeile & "))"
Wenn du das erste Blatt ansprechen willst:

"=sumproduct((month(" & Sheets(1).Name & "!a2:a" & Letztezeile & ")=month(now()-30))*(ae2:ae" & Letztezeile & "))"
Gruß Werner
Anzeige
AW: VBA Summenprodukt
26.05.2021 15:16:57
Bo

Hallo,
was soll den bitte Sheet1 sein? Ist das der Name eines Tabellenblattes? Oder willst du das erste Tabellenblatt ansprechen.
Hallo Werner - beides - es ist das erste Tabellenblatt und heisst auch entsprechend. Funktioniert, danke - die Leerzeichen bei den & Geschichten waren das Problem.
Gruss
Boris
Anzeige
AW: VBA Summenprodukt
26.05.2021 15:31:51
Werner
Hallo,
nö, nicht nur.
Dann mach doch mal bei deinem Code die Leerzeichen entsprechend rein. Nach deiner Auffassung müsste das ja dann passen.
Tut es aber nicht. Vergleich deinen Formeltext mal mit meinem.
Gruß Werner
AW: VBA Summenprodukt
27.05.2021 13:03:31
Daniel
Hi
Vor und nach dem "&" muss hier immer ein Leerzeichen stehen.
VBA verwendet das "&" noch für andere Zwecke, um jetzt den Einsatzzweck "Verketten" eindeutig zu beschreiben, sind die Leerzeichen erforderlich und müssen vom Programmierer eingegeben werden.
Ich würde dir empfehlen, die Variablen auf anderem weg in die Formel einzufügen:
Schreibe den Formeltext zunächst in eine Variable.
Verwende anstelle der Variablen einen Dummy-Text, der ansonsten in der Formel nicht vorkommt.
Ersetze dann den Dummytext durch den Variablenwert:

Dim Fo as string
FO = "=sumproduct((month(a2:axxx)=month(now()-30))*(ae2:aexxx))"
FO = Replace(FO, "xxx", Letztezeile)
Range("B2").Formular = FO
Sind zwar ein paar Codezeilen mehr, ist aber viel übersichtlicher, vor allem.bei komplexen Formeln, bei denen die Variable mehrfach benötigt wird.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige