online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon lothar48 vom 26.07.2019, 22:06 Options

Problem im VBA-Makro mit Summenprodukt-Formel

Hallo Forum,
ich komme mit diesem Problem einfach nicht weiter, kann mir jemand helfen.

Sub versuch()
    Worksheets("test").Select
    ActiveSheet.Unprotect
     For Zeile = 12 To 13
       For Spalte = 3 To 20
          Sheets("test").Cells(Zeile, Spalte).FormulaLocal = _
            "=SUMMENPRODUKT(([t1nummer]=Cells(Zeile, 1))*([t1datum1]<=Cells(9, Spalte))*([t1datum2]>=Cells(9, Spalte)))"
       Next Spalte
     Next Zeile
End Sub


t1nummer, t1datum1 und t1datum2 sind Namen für definierte Bereiche in einem anderen Tabellenblatt. Diese Bereiche möchte ich mit den jeweiligen Zellinhalten (indiziert durch die Schleifenzähler) im aktiven Tabellenblatt vergleichen. Bei Übereinstimmung sollte mir die Formel den Wert 1 zurückgeben. Klappt aber nicht! Ich bekomme 'Laufzeitfehler '1004' Anwendungs- oder objektorientierter Fehler' angezeigt.

Danke für jede Hilfe
Lothar


Antwort schreiben

Antwort 1 von rainberg vom 27.07.2019, 08:34 Options

Hallo Lothar,

schön wäre es, wenn Du ein Testobjekt, was der Tabellenstruktur der Originaldatei entspricht hochladen könntest. Die Daten kannst Du ja verfälschen.
Den Upload kannst Du über folgende Adresse tätigen.

http://www.netupload.de/

Gruß
Rainer

Antwort 2 von lothar48 vom 28.07.2019, 00:12 Options

@Rainer,

ich habe mein Arbeitsblatt mal vereinfacht abgebildet. Bekomme jetzt allerdings einen Syntaxfehler im Makro angezeigt und finde den Fehler nicht - im Moment muß ich passen!
Das Summenprodukt soll den Wert 1 oder bei Datumsüberschneidungen den Wert 2 zurückgeben. Der Zeitraum zwischen datum1 und datum2 in den Tabellen 1 und 2 soll in Tabelle 3 durch "Bedingte Formatierung" als Farbbalken dargestellt werden.
Als Formel im Tabellenblatt funktioniert das wie gewünscht!

Gruss Lothar


hier ist das Arbeitsblatt

Antwort 3 von rainberg vom 28.07.2019, 11:10 Options

Hallo Lothar,

habe das Makro etwas vereinfacht.
Den derzeit verwendeten Bereich Range("C3:S10") kannst Du beliebig anpassen.

http://www.netupload.de/detail.php?img=de76a1049fc88405186ab81021e8...

Gruß
Rainer

Antwort 4 von lothar48 vom 29.07.2019, 10:22 Options

@Rainer,
danke für die Hilfe! Ich habe allerdings wieder dasselbe Problem, welches mich veranlasst hat, die Summenprodukt-Formel in ein Makro zu packen und nicht als Tabellenfunktion zu nutzen. Das Makro macht ja nichts anders als
die Formel in die jeweiligen Zellen der Tabelle zu schreiben. Das hatte ich (mangels VBA Erfahrung) nicht erwartet!
Die Tabelle 3 meines Beispiels besteht tatsächlilch aus 100 Datumsspalten und 400 Zeilen mit lfd. Nr. und ist verknüpft mit 14 Tabellenblättern. Wenn ich in irgendeiner dieser Tabellen Daten ändere oder neu eingebe, berechnet Excel bei jeder Eingabe das Summenprodukt für alle Zellen der Tabelle 3 immer wieder neu! Das dauert dann jeweils ca. 1,5 Minuten. Ein effektives Arbeiten ist so nicht möglich!
Was ich erreichen möchte ist, dass das Ergebnis der vorhergehenden Berechnung in Tabelle 3 immer sichtbar ist und eine Neuberechnung nur durchgeführt wird, wenn der Aktualisierungs-Button gedrückt wird!
>EXTRAS /OPTIONEN / BERECHNUNG / manuell< kann ich nicht nutzen, da noch anderer Bezüge zwischen den Tabellenblättern bestehen die auf jeden Fall automatisch aktualisiert werden müssen.

Sorry, ich hatte mein Problem nicht detailliert genug beschrieben!

Gruss Lothar

Antwort 5 von rainberg vom 29.07.2019, 17:08 Options

Hallo Lothar,

ich war schon versucht , Dir vorzuschlagen, anstatt der SUMMENPRODUKT-Formel , die "WorksheetFunction.SumProduct()" zu verwenden.

Damit würde nicht die Formel in die betreffenden Zellen geschrieben, sondern nur die Ergebniswerte, womit das ständige Neuberechnen wegfällt.

Aber da Du 14 Tabellen einbinden willst, würde das ja 42 definierte Namen bedeuten.
Diese zu erstellen, wäre ja nicht das Problem, aber wohl diese in der SumProduct-Funktion unter zu bringen.

Ich kenne zwar die zulässige Länge einer Formel in VBA nicht, aber ich vermute stark, dass es zu einer Überschreitung kommt.

Da es Schöneres gibt, als das zu testen, zumal ich kein VBA-Fachmann bin, kann ich Dir diesbezüglich leider nicht weiter helfen.

Gruß
Rainer

Antwort 6 von Beverly vom 29.07.2019, 17:26 Options

Hi Lothar,

du darfs keinen Zeilenumbruch innerhalb einer mathematischen Operation machen. Wenn du die Zeilenumbrüche wegnimmst, erscheint kein Fehler.

Bis später,
Karin

Antwort 7 von lothar48 vom 17.10.2019, 12:51 Options

Hallo Rainer,
ich weiß zwar nicht, ob dieser Thread hier noch verfolgt wird, da er schon etwas älter ist. Ich poste trotzdem zunächst einmal hier, in der Hoffnung, dass Du mir nochmals helfen kannst.

Mein Performance-Problem habe ich gelöst, indem ich das Excel-File mittels Makro unter anderem Namen speichere, alle Tabellenblätter, bis auf das relevante, ausblende, die Summenproduktformel einmal ausführe und ich habe das gewünschte Ergebnis! Mit dem Ursprungstabellenblatt kann ich normal weiterarbeiten!

Nun habe ich das Problem, dass ich den Farbbalken evtl. in einer anderen Farbe darstellen muß, nämlich immer dann, wenn in der Spalte "Merkmal" ein Wert steht (E oder A), soll der Balken nicht in blau sondern in grün dargestellt werden. Die Summenproduktformel müßte also in diesen Fällen einen anderen Wert als 1 liefern, dann könnte ich die Farbe über die "Bedingte Formatierung" steuern. Ich bekomm's alleine nicht hin, wäre nett, wenn Du mir nochmals helfen würdest.

Eine Beispieldatei habe ich hochgeladen.


Gruss Lothar

Antwort 8 von Saarbauer vom 17.10.2019, 13:14 Options

Antwort 9 von lothar48 vom 17.10.2019, 13:46 Options

Hallo Helmut,
nein, so meinte ich das nicht!
Die mit der grünen Umrandung gekennzeichneten Zellen, die jetzt blau sind, sollen grün dargestellt werden, weil in der Spalte "Merkmal" E oder A steht! Steht unter "Merkmal " nichts, dann sollen sie blau dargestellt werden!

Gruss Lothar

Antwort 10 von Saarbauer vom 17.10.2019, 14:12 Options

Hallo,

dann so

http://www.netupload.de/detail.php?img=5bbc53a7fcf2d9321886fed2bf1f...

Notfalls bei merkmale die BEdingungen für die Formatierung löschen

Gruß

Helmut

Antwort 11 von lothar48 vom 17.10.2019, 14:33 Options

Nein, so auch nicht!
Das ganze Problem ist etwas komplizierter!
Wenn Du Dir den ganzen Thread durchliest, weist Du worum es geht!
Die Lösung liegt wohl nur in einer Änderung des VBA-Makros, welches die Summenprodukt-Formel ausführt.

Gruss Lothar

Antwort 12 von Saarbauer vom 17.10.2019, 14:52 Options

Hallo,

auf ein neues. Wenn du dein Formel so ergänzt

=SUMMENPRODUKT(((t1nummer=$A3)*(t1datum1<=C$1)*(t1datum2>=C$1))+((t2nummer=$A3)*(t2datum1<=C$1)*(t2datum2>=C$1)))*WENN(ODER($T3="E";$T3="A");10;1)

Dann kommt anstelle von 1 oder 2, 10 oder 20 und jetzt bei der Bedingten Formatierung die dritte Bedingung auf => 10 setzen

Gruß

Helmut

Antwort 13 von lothar48 vom 17.10.2019, 19:21 Options

Hallo Helmut,
ich habe versucht Deinen Lösungsvorschlag [/url=http://www.netupload.de/detail.php?img=cca77fc9a9400cafe88863ce68d7b12e.xls]
hier[/url] umzusetzen.

Ich bekomme allerdings bei der Ausführung des Makros
"Laufzeitfehler 1004 - Anwendungs- oder objektdefinierter Fehler" angezeigt!

Ohne Hilfe komme ich hier nicht weiter, irgendeine Idee?

Gruss Lothar

Antwort 14 von Saarbauer vom 17.10.2019, 19:28 Options

Antwort 15 von lothar48 vom 17.10.2019, 19:46 Options

Hast Du evtl. nicht die richtige Datei hochgeladen?
Wenn ja, wo hat sich was geändert?

Gruss Lothar

Antwort 16 von Saarbauer vom 17.10.2019, 19:54 Options

Hallo,

seh mal in den grünen Feldern mit der 10 nach, geändert in allen Feldern und die bedingte Formatierung

Setze an anderer Stelle mal das E.

Ich habe an alle Zellen *WENN(ODER($T3="E";$T3="A");10;1)

Gruß

Helmut

Antwort 17 von rainberg vom 17.10.2019, 20:22 Options

Hallo Lothar,

habe die Bedingte Formatierung geändert.
Teste mal selbst.

http://www.netupload.de/detail.php?img=0f5c9260bb750a720ebccc84e9d9...

Gruß
Rainer

Antwort 18 von lothar48 vom 17.10.2019, 21:38 Options

@Rainer

n'abend Rainer, schön das Du hier mitliest!

@Helmut

Ok, hab's gesehen, da ist mir bei der Erstbeschreibung meines Problems ein Fehler unterlaufen, T'schuldigung!

Schaut Euch doch bitte nochmal

diese
Datei an.

Das Merkmal, welches abgefragt werden soll, ist in den Tabellen 1 und 2 und nicht in Tabelle3 definiert.

Das VBA-Makro "berechnen" schreibt die Funktion >Summenprodukt< in den Zellbereich C3:S10, diese Funktion ermittelt den Wert 1 oder 2 je Zelle (Darstellung in blau oder rot durch "Bedingte Formatierung"). Das funktioniert auch. Was jetzt neu hinzugekommen ist, ist das Merkmal welches maßgebend dafür ist, ob die Zelle in grün dargestellt werden soll. Das Summenprodukt müßte also um eine Bedingung erweitert werden. Das habe ich versucht, erhalte aber den benannten Fehler.

Die Werte A und E in den Zellen T2 und U2 der Tabelle3 habe ich angegeben, weil die Abfrage auf ="A" bzw. = "E" in der Summenprodukt-Funktion einen Syntaxfehler erzeugt hat. Ich vermute das hängt mit der R1C1-Darstellung zusammen.

Gruss Lothar

Antwort 19 von rainberg vom 18.10.2019, 08:41 Options

Hallo Lothar,

so wie Du das machen wolltest geht das nicht, das widerspricht der Syntax von SUMMENPRODUKT.

Um die Formel nicht weiter zu komplizieren habe ich eine Hilfspalte eingefügt und deren Daten für die Bedingte Formatierung verwendet.

Die Formeln der Hilfsspalte werden ebenfalls durch das Makro aktualisiert.

http://www.netupload.de/detail.php?img=af5dfbdc66f7cfb402de6b92e4ac...

Gruß
Rainer

Antwort 20 von Saarbauer vom 18.10.2019, 12:47 Options

Hallo,

durch @rainberg's Lösung, jetz ohne hilfspalte

http://www.netupload.de/detail.php?img=9cd546ff049fa7b9389b02ff7b43...


Gruß

Helmut

Ähnliche Themen

Summewenn und Zählenwenn mit mehreren Kriterien mit Excel
JoeKe  17.05.2009 - 22592 Hits - 1 Antwort

Excel Makro erscheint nicht in Makroliste
H.E.N.K  01.02.2007 - 218 Hits - 1 Antwort

Formelanfrage für Summenprodukt-Ergebnis
Peter71  16.07.2007 - 25 Hits - 5 Antworten

Brauche Tipps für einen individuellen VBA-Code
varginator  03.04.2008 - 118 Hits - 14 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026