Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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

Makro läuft nur sehr langsam

Makro läuft nur sehr langsam
07.09.2019 22:25:24
Christina
Guten Abend zusammen,
ich muss bei hunderttausenden Zellen eine Summenprodukt-Formel verwenden. Um mir dies zu erleichtern, habe ich mir notdürftig ein Makro zusammengeschrieben aus verschiedenen Internetseiten. Das funktioniert sogar - nur leider braucht Excel pro Zeile um die 2 Minuten und das würde Tage dauern. Könnte mir jemand dabei helfen, das Makro schneller zu machen? Das wäre toll!
Um dieses Makro handelt es sich:
Sub Summenprodukt()
Dim Zelle As Range
For Each Zelle In ActiveSheet.Range("C2:BL31879")
Zelle.Formula2R1C1 = "=SUMPRODUCT((Daten_pro_Firma!C18=CUSIP_ohne_Duplikate!R1C)*( _
Daten_pro_Firma!C19:C38=CUSIP_ohne_Duplikate!RC1))"
Next Zelle
Range("C2:BL31879").Value = Range("C2:BL31879").Value
End Sub

Vielen Dank!
Liebe Grüße
Christina

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro läuft nur sehr langsam
07.09.2019 22:58:37
Piet
Hallo Christina
setz bitte VOR vor For Next diesen Befehl: - Application.Calculation = xlManual
und HINTER Range("C2:BL31879").Value wieder - Application.Calculation = xlAutomatic
Damit schaltest du das automatische Berechnen auf Manuell um!
mfg Piet
AW: Makro läuft nur sehr langsam
08.09.2019 04:27:04
Werner
Hallo,
was bitte ist Formula2R1C1?
Und warum schreibst du die Formel Zellenweise in die Tabelle?
Wobei bei mir (auch mit deiner Version) die Meldung kam, dass nicht genügend Resourcen vorhanden sind.
Teste mal:
Den Zeilenumbruch bitte rausnehmen, den hat die Forensoftware eingefügt.
Range("C2:BL31879").FormulaR1C1 = "=SUMPRODUCT((Daten_pro_Firma!C18=CUSIP_ohne_Duplikate!R1C)*( _
Daten_pro_Firma!C19:C38=CUSIP_ohne_Duplikate!RC1))"
Range("C2:BL31879").Value = Range("C2:BL31879").Value
Gruß Werner
Anzeige
AW: Makro läuft nur sehr langsam
08.09.2019 06:57:44
Christina
Danke für eure schnellen Antworten!
@Piet, danke für den Hinweis! Jedoch geht es gerade erstmal darum, das Makro einmal vollständig durchlaufen zu lassen.
@Werner, wenn ich das Makro aufzeichne, benutzt er diese Formel. Leider bin ich nicht so tief in VBAs drin, um zu erklären, was das genau bedeutet. Wenn ich nicht pro Zelle einfüge sondern die Range, stürzt mir mein gesamter Laptop leider ab...
AW: Makro läuft nur sehr langsam
08.09.2019 07:56:42
Hajo_Zi
in meiner Datei stürzt Excel nicht ab. Zu Deiner Datei kann ich nichts schreiben, da ich nicht auf fremde Rechner schaue.
Die ersten beiden Zeilen hast Du zu einer Zeile gemacht? Den Zeilenumbruch macht das Forum.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Makro läuft nur sehr langsam
08.09.2019 08:21:23
Luschi
Hallo Christina,
wenn ich den Makrorecorder anwerfe, dann schreibt er das so:
Range("C2:BL31879").FormulaR1C1
und nicht
Range("C2:BL31879").Formula2R1C1
Außerdem willst Du in 1.97.6436 Zellen eine Summenprodukt()-Formel einfügen, hat meine Fingerzählerei ergeben [so viele Zellen hat der Bereich Range("C2:BL31879")].
Damit machst Du Dir Das Tabellenblatt zur lahmsten Krücke der Welt. Ob das Dein Ziel ist?
fragt sich Luschi
aus klein-Paris
AW: Makro läuft nur sehr langsam
08.09.2019 09:05:39
Christina
Hallo Luschi,
Ideal wäre natürlich eine deutlich schnellere und leichtere Variante, nur leider ist mir keine eingefallen.
Ich habe eine Spalte R in der Werte stehen - insgesamt 65 verschiedene sodass die auch mehrmals vorkommen. Und in den Spalten S bis BL stehen wiederum Identifikantionsnummern, die auch mehrmals vorkommen. Nun möchte ich wissen, wie viele verschiedene Werte in Spalte R pro Identifikantionsnummer stehen. Da ich das nicht geschafft habe, habe ich diesen Zwischenschritt gebaut, der mir die Anzahl der jeweils vorkommenden Werte in Spalte R pro Identifikantionsnummer Mithilfe des Summenproduktes wiedergibt.. Damit könnte ich dann in einem nächsten Schritt zählen, wie viele verschiedene Werte es sind.
Gibt es hier denn eine elegantere Lösung?
Sorry für die etwas komplizierte Erklärung.
Anzeige
AW: Makro läuft nur sehr langsam
08.09.2019 10:03:38
Luschi
Hallo Christina,
ich habe im vorigen Jahr einer Anfragerin geholfen, die auch versuchte, mit SummenProdukt(...) unterschiedlichste Ergebnisse in den verschiedensten Varianten zu ermitteln.
Hier schwächelt Excel und ich habe ihr eine Vba-Lösung gezeigt, die auf der Basis der Datenbank-Technologie 'AdoDB' basiert - und obwohl auch sie von Vba fast Null-Ahnung hatte, haben wir eine gute Lösung gefunden.
Wenn Du Dich darauf einlassen willst, dann lasse es mich wissen.
Gruß von Luschi
aus klein-Paris
AW: Makro läuft nur sehr langsam
08.09.2019 19:12:56
Christina
Danke Luschi für das Angebot - ich werde noch versuchen ein bisschen zu tüfteln und sonst auf dich zurück kommen, wenn das in Ordnung für dich ist! :)
Anzeige
AW: Makro läuft nur sehr langsam
08.09.2019 14:25:10
Daniel
Hi
fangen wir mal grundsätzlich an.
1. wenn du in mehrere Zellen die gleiche Formel schreibst, solltest du nicht jede Zelle einzeln befüllen, sondern alle Zellen gleichzeitig.
also nicht
For each Zelle in Range(...)
Zelle.FormulaR1C1 = "..."
Next

sondern
Range(...).ForumlaR1C1 = "..."
2. bei Summenprodukt sollte man ganze Spalten oder ganze Zeilen als Zellbezug auf jeden Fall vermeiden, weil dann auch die komplette Spalte mit ihren 1,04 Mio Zellen durchgerechnet wird.
hier muss der Zellbereich auf jeden fall so genau wie möglich an die vorhandene Tabelle angepasst werden.
Bei SummeWenn oder ZählenWenn kann man ganze Spalten angeben, weil hier excel prüft, welche Zellen tatsächlich verwendet werden, aber nicht mit SummenProdukt bzw generell nicht in Matrixformeln
dh dein Daten_pro_Firma!C18 solltest du auf jeden Fall durch sowas ersetzen: Daten_pro_Firma!R1C18:R999C18, wobei du die 999 natürlich bestimmen und anpassen müsstest.
zu deinen Problem.
ich habe noch nicht genau verstanden, was du machen willst.
kannst du eine abgespeckte Beispieldatei einstellen, in welcher du zeigst, wie die Daten vorliegen und wie du dir das Ergebnis vorstellst?
Gruß Daniel
Anzeige
AW: Makro läuft nur sehr langsam
08.09.2019 19:46:00
Christina
Hi Daniel, danke dir für deine ausführliche Antwort! Ich habe gerade eine Beispiel-Datei gebaut, jedoch übersteigt diese 300KB. Kann ich dir die anders zukommen lassen oder gibt es da irgendwelche Tricks?
AW: Makro läuft nur sehr langsam
08.09.2019 20:11:51
Daniel
Alles rauslöschen, was nicht benötigt wird.
Es muss ja auch nicht die komplette Tabelle sein, ein paar Zeilen und Spalten reichen, wenn man daraus erkennt, was berechnet werden soll un man alternatve Lösungen zumindest mal auf Funktion damit überprüfen kann.
Gruß Daniel
AW: Makro läuft nur sehr langsam
08.09.2019 20:11:53
Daniel
Alles rauslöschen, was nicht benötigt wird.
Es muss ja auch nicht die komplette Tabelle sein, ein paar Zeilen und Spalten reichen, wenn man daraus erkennt, was berechnet werden soll un man alternatve Lösungen zumindest mal auf Funktion damit überprüfen kann.
Gruß Daniel
Anzeige
AW: Makro läuft nur sehr langsam
08.09.2019 22:32:31
Daniel
Wenn du richtig löschst, klappts auch.
wenn du hier mit Formeln in vernünftiger Gewschwindigkeit auswerten willst, musst du so vorgehen
1. Sortiere die Tabelle2 nach Spalte A, so dass alle Zeilen mit gleichem Begriff direkt untereinander stehen.
2. füge in der Auswertetabelle zwei Hilfszeilen ein, in welchen du für jeden Begriff die Start- und Endzeile in der Tabelle2 ermittelst
3. Werte dann mit ZählenWenn aus und schränke die Auswertung auf die tatsächlich benötigten Zeilen ein, so wie du sie unter 2. ermittelt hast.
Schau dir mal das Beispiel an (ist deine Tabelle, nachdem ich alles überflüssige gelöscht habe)
https://www.herber.de/bbs/user/131915.xlsb
Gruß Daniel
Anzeige
AW: Makro läuft nur sehr langsam
09.09.2019 07:44:44
Christina
Guten Morgen Daniel,
ich weiß gar nicht, wie ich dir danken soll! Du hast mir bei meiner Masterarbeit sehr weitergeholfen, das Vorgehen kann ich bestimmt noch öfter anwenden! Danke schön!! :)
Es klappt perfekt :)
Liebe Grüße
Christina

20 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige