Office: SUMMENPRODUKT über VBA -> Performanz verbessern

Helfe beim Thema SUMMENPRODUKT über VBA -> Performanz verbessern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe mich heute hier angemeldet, weilich gerade ein bisschen verzweifle. Es geht um die Anwendung von der Summenproduktformel via Makro,... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von mücke, 8. August 2010.

  1. OfficeUser Neuer User

    SUMMENPRODUKT über VBA -> Performanz verbessern


    Hallo,

    ich habe mich heute hier angemeldet, weilich gerade ein bisschen verzweifle.

    Es geht um die Anwendung von der Summenproduktformel via Makro, da insgesamt mehrere tausend (ca. 50.000 Zeilen x 20 Spalten) ausgefüllten werden müssen. Die normale Summenproduktformel ist dafür zu ineffizient.

    Ich habe versucht die Formel von mücke aus Beitrag 1 auf mein Problem anzuwenden. Es klappt allerdings nicht wie erhofft.

    Weiterhin muss ich es wohl mit einer/zwei Schleifen verbinden.

    In Excel lautet die Summenformel für die Zelle H4 in Sheet3 wie folgt:

    =SUMMENPRODUKT((Sheet1!$A$2:$A$50000=Sheet3!$A4)*(Sheet1!$E$2:$E$50000=Sheet3!H$ 3)*(Sheet1!$T$2:$T$50000))

    Die Ergebnisse der Summenproduktformeln sollen jeweils in den Zellen H4 bis Spalte DC50000 geschrieben werden.

    "Erschwerend" (zumindest für mich) kommt hinzu, dass ich mit 2 unterschiedelichn Arbeitsblättern arbeiten muss.

    Ich hoffe jemand kann mir einen tip geben, wie ich den Code umgestalten muss, damit es funktioniert. Versuche mit Evaluate haben leider auch nix gebracht, wobei ich nun auch kein VBA Crack bin.


    Excel Jeanie HTMLSheet3

     AHIJ
    3Unique Key126401448112410
    42500213212610488000
    525002132126105704000
    6250021321261010000
    7250021321261011000
    82500628814481200,310
    9250111701241010015087,5
    10250111701241020014492,5
    11250111701241030015997
    ZelleFormel
    H4=SUMMENPRODUKT((Sheet1!$A:$A000=Sheet3!$A4)*(Sheet1!$E:$E000=Sheet3!H)*(Sheet1!$T:$T000))
    I4=SUMMENPRODUKT((Sheet1!$A:$A000=Sheet3!$A4)*(Sheet1!$E:$E000=Sheet3!I)*(Sheet1!$T:$T000))
    J4=SUMMENPRODUKT((Sheet1!$A:$A000=Sheet3!$A4)*(Sheet1!$E:$E000=Sheet3!J)*(Sheet1!$T:$T000))
    Excel Tabellen im Web darstellen >>
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    OfficeUser, 12. November 2012
    #16
  2. Hallo zusammen,

    ich bin auf diesen Thread gestoßen und war eigentlich sehr glücklich weil ich ein ähnliches Problem habe.
    Nur leider funktioniert die formel bei mir genauso langsam als wenn ich es excel berechnen lasse...

    Zum Problem:
    ich möchte mir Durchschnittswerte für bestimmte Kunden anzeigen lassen. Dazu lasse ich eine Liste auslesen die folgendermaßen aussieht:
    Spalte I : Kundenname
    Spalte AB : Kalkulierte Stunden
    Spalte AA : Geleistete Stunden
    Spalte AL : Zeitraum
    Spalte AM : Effizienz = Kalkulierte Stunden / geleistete Stunden


    Das ist mein Code:

    pintZaehler : Allgemeiner Zaehler als Integer
    cintZeile_Start : Konstante Integer
    pintAnzahl_Zeilen : Allgemeine Variable mit der Anzahl der Zeilen die ich vorher auslese

    Code:
    Jemand ne Idee was ich falsch mache? Mit dem Dictionary hab ich es nicht hinbekommen weil ich nicht verstehe wie man da die Vergleichsoperatoren einbringt.

    Vielen Dank im Voraus!!!

    Gruß
    Sebastian
     
  3. Grüezi Sebastian

    Die 'Arbeit' der Formel ist ja dieselbe, egal ob in Excel oder in VBA.


    ...aber warum verwendest Du nicht eine Pivot-Tabelle, ganz ohne VBA und Programmierung?
     
    Thomas Ramel, 19. September 2013
    #18
  4. SUMMENPRODUKT über VBA -> Performanz verbessern

    Hallo Thomas,

    hatte irgendwie gehofft, dass das über VBA schneller geht.

    Pivot kann ich nicht nehmen, da ich diese Werte darauf dann mit einer Pivot Tabelle verarbeite :-)

    Vielleicht kann mir mal einer helfen, dass mittels dieser dictionary methode zu vereinfachen? Das scheint ja der deutlich schnellere Weg zu sein.

    Momentan braucht er nämlich für meine Operation mit 10xxx Zeilen ca. 4 Minuten!!!
     
  5. Würde es vielleicht noch was bringen wenn ich mir meine Ergebnisse erst in ein array schreibe und dann am Ende alles gleichzeitig nach Excel übertrage anstatt wie jetzt jeden Wert einzeln zu schreiben?

    EDIT:
    Selber beantwortet. Lasse ich das schreiben nach Excel weg ändert sich nicht viel. Es ist und bleibt die Sumproduct formel...
     
  6. Hallo Sebastian,

    mit Vba würde ich Folgendes versuchen:
    - die Ausgangstabelle in ein ListObject' wandeln (als Tabelle formatieren)
    - per Vba in der Auswertetabelle je Zeile/Zelle den Filter auf das ListObject setzen und das Ergebnis aus der Ergebniszeile dieses Objektes in die jeweilige Zeilenwerte übertragen

    Andere Möglichkeiten einer Tempobeschleunigung sehe ich nicht; denn Vba ist immer langsamer als die Excel-Formellösungen.
    Wenn Du eine Ausgangstabelle mit ein paar Testdaten, die Deinem Tabellenaufbau entsprechen, bereitstellst, mache ich mich mal ans Werk.-
    Bitte die Datei als gezippte Datei hier hochladen, da ich hinter einer meterdicken Firewall sitze, die xlsx, xlsm, txt und xls von dieser Webseite blockiert!

    Gruß von Luschi
    aus klein-Paris
     
  7. Hallo Luschi,

    kann da leider auch nicht viel machen weil ein Teil meiner Liste eine Liste aus unserem Intranet ist :-)

    Ist alles eine ganz schön verstrickte Sache...
    Bin aber gerade an einer Lösung dran die ich dann gerne hier poste.

    Das Stichwort ist Sumproduct durch Sumif zu ersetzen und dabei auf eine Hilfspalte zurückzugreifen.
     
  8. SUMMENPRODUKT über VBA -> Performanz verbessern

    so, es funktioniert und das mit 1:43 min anstatt 4:00 min

    Das ist die Lösung:
    man muss sich eine Zusatzspalte bauen und dann mit Sumif arbeiten.

    Code:
     
Thema:

SUMMENPRODUKT über VBA -> Performanz verbessern

Die Seite wird geladen...
  1. SUMMENPRODUKT über VBA -> Performanz verbessern - Similar Threads - SUMMENPRODUKT VBA Performanz

  2. Summenprodukt als Vergleich zu Pivot

    in Microsoft Excel Hilfe
    Summenprodukt als Vergleich zu Pivot: Hallo Zusammen, ich habe eine kurze Frage. Ich habe eine Tabelle in der von den Quelldaten, ca. 35000 Zeilen, Pivots erstellt werden. Als Vergleich würde ich gerne Formeln neben die Pivotwerte...
  3. Summenprodukt vereinfachen

    in Microsoft Excel Hilfe
    Summenprodukt vereinfachen: Hallo, ich habe folgende Summenprodukt-Formel, die ich gerne vereinfachen möchte: =SUMMENPRODUKT (B10:X10=B1+B10:X10=B3+B20:X20=B1+B20:X20=B3+[...]+B200:X200=B1+B200:X200=B3) Ich simuliere...
  4. Zaehlenwenns mit mehreren Kriterien?

    in Microsoft Excel Hilfe
    Zaehlenwenns mit mehreren Kriterien?: Hallo Zusammen, ich habe in einer Tabelle eine Kundennummer und in einer anderen alle Lieferungen an diesen Kunden inkl der Lieferbedingungen pro Lieferung. Ich wüsste gerne, ob es zu einem...
  5. Office 365; Summenprodukt

    in Microsoft Excel Hilfe
    Office 365; Summenprodukt: Moinmoin zusammen, ich bekomme den Fehler #WERT! nicht weg. Die Formel lautet: =SUMMENPRODUKT((MONAT($B$11:$B$36)=MONAT($N$11))*($E$11:$E$36)) Damit möchte ich lediglich geleistete Minuten pro...
  6. Summewenns mit Datum und Zwei Buchstaben eingrenzen

    in Microsoft Excel Hilfe
    Summewenns mit Datum und Zwei Buchstaben eingrenzen: Guten Abend Zusammen, ich versuche aus einer Tabelle mit Summewenns (sumifs) die Beträge vom Kalendermonat abweichend zu errechnen. Das funktioniert mittlerweile auch. Da das Datum über den...
  7. Summenprodukt mit Abhängigkeit in VBA

    in Microsoft Excel Hilfe
    Summenprodukt mit Abhängigkeit in VBA: Hallo Zusammen, bin leider bei den vorhandenen Beiträgen nicht fündig geworden. Als Summenprodukt pro Zeile bekomme ich das hin, aber nicht in VBA. [ATTACH] Dies ist nur ein Auszug zur...
  8. SummenProdukt per vba benutzen

    in Microsoft Excel Hilfe
    SummenProdukt per vba benutzen: Hallo, ich würde gerne per VBA in eine Zelle eine Formel mit Summenprodukt schreiben. Das ist jetzt nur testweise, wenn in Spalte A "x" steht dann soll er die Werte in B Addieren. Sub...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden