HERBERS Excel-Forum - das Archiv

Thema: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)

Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
erichm
Hallo,

ich habe mit Hilfe von Internetrecherchen und diesem Forum einen Code erstellt, der in einer Tabelle für die Zellen AB3 bis AU10020 (= 200.340 Zellen) die Ergebnisse aus der Berechnung mit Summenprodukt einträgt. Der Code funktioniert und liefert richtige Ergebnisse.

Da ich allerdings keine große VBA-Erfahrung habe, bin ich mir nicht sicher, ob der Code besser (schneller) gestaltet werden könnte. Derzeit benötigt der Code ca. 1,2 Minuten.

Sub ErgebnisBerechnenUndEinfügenlang()
Dim ws As Worksheet
Dim i As Integer, j As Integer
Dim result As Variant

Start = Timer

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

' Definiere das Arbeitsblatt zur Aktivierung
Set ws = ThisWorkbook.Sheets("keineWDH16er")

' Bereich AB3 bis AU10020 leeren
ws.Range("AB3:AU10020").ClearContents

' Durchlaufen der Zellen AB3 bis AU10020
For i = 3 To 10020
For j = 28 To 47 ' Spalten AB bis AU
' Spaltenindex für Worksheet "CP2" anpassen
Dim colIndex As Integer
colIndex = j - 25 ' da die Spalten AB bis AU den Index 28 bis 47 haben

' Formel für Prüfung der Übereinstimmung der Werte mit Worksheet "Start"
ws.Cells(i, j).Formula = "=SUMPRODUCT(--(INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,1):INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,16)=GQ" & i & ":$HF" & i & "), --(INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,1):INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,16)=GQ" & i & ":$HF" & i & "))"

' Ergebnis aus der Formel auswerten und in die Zelle einfügen
result = ws.Cells(i, j).Value
ws.Cells(i, j).Value = result
Next j
Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Calculation = xlCalculationManual

MsgBox Format(Timer - Start, "#0.00") & "Sekunden" & Time

End Sub

Vielen Dank für eine Sichtung des Codes und ggfls. Rückmeldung.

mfg
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
schauan
Hallöchen,

1)
result = ws.Cells(i, j).Value
ws.Cells(i, j).Value = result
das geht auch in einem Schritt ohne dazwischenliegendes result, bringt aber geschwindigkeitsmäßig nix

2)
normalerweise geht es schneller, Ergebnisse in ein Array zu packen und dieses dann in die Zellen zu übernehmen statt jede Zelle einzeln zu beackern. Dazu müsstest Du aber schauen, wie Du die Formel in VBA nachbilden kannst.
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
erichm
Hallo schauan,

danke für den Hinweis 2 - da reichen meine Kenntnisse leider nicht aus; ich werde mal schauen, ob ich bei meinen Recherchen "Array-Erstellungen" finden kann.

mfg
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
Daniel
Hi

Schreibe mal die Formel von Hand in ein paar Zellen und setzte alle Zellbezüge, für die es möglich ist, auf Absolut. Lass nur die relativ, die zwingend relativ sein müssen.

Wechsle dann über Datei-Optionen-Formeln auf die Z1S1-Bezugsart.
Wenn du dir jetzt die einzelnen Formeln anschaust, wirst du feststellen, dass in jeder Zelle der selbe Formeltext steht.

Da alle Zellen die gleiche Formel haben, kannst die die Aufgabe ohne Schleife lösen, weil du die Formel in alle Zellen gleichzeitig schreiben kannst und nicht jede Zelle einzeln befüllen musst.

With ws.cells(3, 28).resize(10018, 20)

.formulaR1C1 = "=Formel mit R1C1-Adressen"
.formula = .value
End With


Das wird aber auch nur wenig Verbesserung bringen, da 200.000 Summenprodukte einfach Rechenzeit brauchen.
Ggf ließe sich das ganze mit Dictionarys schneller berechnen, aber da solltest du mal eine Beispieldatei bereitstellen, mit der man den Code auch testen und du die Ergebnisse überprüfen kannst.

Gruß Daniel
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
schauan
Hallöchen,

mal ein paar kleine Hinweise dazu.
1)
fange zum Test klein an :-) z.B.
Sub Test()

Dim arrWerte(3,4) 'bedeutet Array mit 4x5 "Zellen" - Index beginnt, wenn nicht anders definiert, bei 0
Dim iCnt_1&, iCnt_2&
For iCnt_1 = 0 to 3
For iCnt_2 = 0 to 4
arrWerte(iCnt_1,iCnt_2) = iCNt_1 * iCnt_2 'nur mal so um was berechnetes einzutragen
Next
Next
Range("A1:D5")=Worksheetfunction.Transpose(arrWerte) 'je nach Arrayaufbau transponieren
Dim arrBereich 'fuer 2) zum anschauen
arrBereich = Range("A1:D5").Value
Stop
End Sub


2)
schaue Dir im z.B. Lokalfenster mal an, wie das unter 1) in der Schleife erzeugte array aussieht und wie ein aus einem Bereich übernommenes aussieht ...

3)
da wäre dann noch die Formel
AW: Arrays
Fennek
Hallo,

der Zugriff auf einzelne Zellen ist recht langsam. Zum Beschleunigen können möglichst viele Zellen auf einmal in ein Array kopiert werden und dann alle Berechnungen im Array erfolgen. Am Ende wird das komplette Array zurück-geschrieben.

Beschleunigungen mit dem Faktor 100 sind erreichbar.

mfg
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
Oberschlumpf
Hi,

hmm...du bist doch auch nich erst seit gestern hier, oder?

Sorry, aber die "Darstellung" deines Codes sieht so unübersichtlich aus; und dabei mein ich noch gar nicht den Code selbst...

Ich frage mich, wieso nicht auch du den Code-Formatier-Button, beginnt mit "Code" und steht immer direkt oberhalb jedes Antworttextfeldes.
Auch dein Code könnte dann SO dargestellt werden:


Sub ErgebnisBerechnenUndEinfügenlang()
...hier dein ganzer Code...
End Sub


So, dies ist eigtl nur eine Bitte an dich, in Zukunft kleinere Codes, wie beschrieben, darzustellen.
Wenn es aber so viel an Code ist wie jetzt, dann würde zumindest ich mich freuen, wenn du uns per Upload eine Excel-Bsp-Datei zeigst mit genügend Bsp-Daten (es müssen nicht über 200tsd Zellen sein), ich denke, es könnte schon reichen, wenn du den Bereich AB3 bis AU10 mit Bsp-Daten füllst.
Und dein Code sollte natürlich auch in der Bsp-datei enthalten sein.

Ciao
Thorsten
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
erichm
Hallo Thorsten,

danke für den Hinweis!! Mein Startbeitrag war natürlich nicht optimal, aber vor lauter Freude, dass der Code läuft, war ich etwas blauäugig - Entschuldigung.

Nachstehend die Beispieldatei, bei der es um statistische Erhebungen bzw. Auswertungen und Analysen geht. Das Ergebnis des Codes wird in die Tabelle "keineWDH16er" eingetragen; ich habe zusätzlich eine Tabelle "keineWDH16er-Vergleich" angelegt, damit ich sofort erkennen kann, ob die Ergebnisse des Codes richtig sind.

Im aktuellen Beispielfall werden ab Zeile 3 bis 10 der Tabelle "keineWDH16er" die Einträge in den Spalten GQ bis HF mit den Einträgen in der Tabelle Start (B bis Q), Zeile 28 (=Tabelle CP2, C13 bis V13) verglichen mit der Formel Summenprodukt.

Sub ErgebnisBerechnenUndEinfügenlang()

Dim ws As Worksheet
Dim i As Integer, j As Integer
Dim result As Variant

Start = Timer

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

' Definiere das Arbeitsblatt zur Aktivierung
Set ws = ThisWorkbook.Sheets("keineWDH16er")

' Bereich AB3 bis AU10 leeren
ws.Range("AB3:AU10").ClearContents

' Durchlaufen der Zellen AB3 bis AU10020
For i = 3 To 10
For j = 28 To 47 ' Spalten AB bis AU
' Spaltenindex für Worksheet "CP2" anpassen
Dim colIndex As Integer
colIndex = j - 25 ' da die Spalten AB bis AU den Index 28 bis 47 haben

' Formel für Prüfung der Übereinstimmung der Werte mit Worksheet "Start"
ws.Cells(i, j).Formula = "=SUMPRODUCT(--(INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,1):INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,16)=GQ" & i & ":$HF" & i & "), --(INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,1):INDEX(Start!$B:$Q,CP2!$" & Chr(64 + colIndex) & "$13,16)=GQ" & i & ":$HF" & i & "))"

' Ergebnis aus der Formel auswerten und in die Zelle einfügen
result = ws.Cells(i, j).Value
ws.Cells(i, j).Value = result
Next j
Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Calculation = xlCalculationManual

MsgBox Format(Timer - Start, "#0.00") & "Sekunden" & Time

End Sub


Datei: https://www.herber.de/bbs/user/168650.xlsm

Vielen Dank für eine Rückmeldung bzw. Vorschlag für einen Code mit Array.

mfg
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
schauan
Hallöchen,

hier mal ein Ansatz mit den Arrays.
Die Schleife wäre jetzt für Zeile 3, da könntest Du dann statt der Zahl 3 Deine Variable i verwenden
mein iCnt1 wäre äquivalent zu Deinem Spaltenzaehler j Ich hab das jedoch so: Cells(3, 28).Offset(, iCnt1) gelöst, damit die Einträge ab AB erfolgen. Dadurch kann ich den Zähler gleichzeitig für das Runterzählen der "Zeilennummern" verwenden analog zu Deiner Zählung im Blatt CP2.

Sub test()

'Vergleichsdaten in Array uebernehmen - Zeile statt 3 dann variabel gestalten!
arrRng16er = Sheets("keineWDH16er").Range("$GQ3:$HF3").Value
'Schleife ueber 20 Datensaetze
'Voraussetzung: Schrittweite 1 auf CP2 wie im Beispiel!
'dann koennen die "Schrittzahlen" hier berechnet werden
For iCnt1 = 0 To 19
'Zeilennummer aus CP2 C13 uebernehmen
lrow = Sheets("CP2").Cells(13, 3).Value - iCnt1
'Adresse fuer Zeile auf Blatt Start zusammensetzen
rngaddr = "B" & lrow & ":Q" & lrow
'Daten aus Blatt Start in ein Array uebernehmen
arrRngStart = Sheets("Start").Range(rngaddr).Value
'Schleife zum Vergleich ueber 16 "Spalten"
For iCnt2 = 1 To 16
'Bei Gleichheit Ergebnis 1 "hoch"zaehlen
result = result + (arrRng16er(1, iCnt2) = arrRngStart(1, iCnt2))
'Ende Schleife zum Vergleich ueber 16 "Spalten"
Next
'Ergebnis eintragen - Zeilennummer dann variabel bilden
Cells(3, 28).Offset(, iCnt1) = -result
'und zuruecksetzen fuer naechste Berechnung
result = 0
'Ende Schleife ueber 20 Datensaetze
Next
'Hinweis: Bei Formeleintrag per VBA kann man die Formel auch gleich richtig, d.h. ohne INDEX, bilden! z.B.
'Range("AB3").Formula = "=SUMPRODUCT(--(Start!R28C2:R28C17=R3C199:R3C214)*--(Start!R28C2:R28C17=R3C199:R3C214))"
'(natürlich für die variablen Werte auch Variablen einsetzen :-) )
End Sub
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
erichm
Hallo schauan,

vielen Dank für die Rückmeldung und insbesondere auch für die Erläuterungen.

Ich werde morgen / übermorgen versuchen, dies auf die Projektdatei zu übertragen und melde mich nochmals, spätestens am Sonntag.

mfg
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
schauan
Hallöchen,

eins hab ich hier noch - konsequenterweise sollte man die Ergebnisse der Zeile auch mittels Array in einem Rutsch eintragen.
Man kann nun natürlich noch schauen, ob man per 2D - Array weitere Zell- bzw. Zeilenzugriffe reduzieren kann.

Sub test()

Dim arrResults(19), iCnt1%, iCnt2%
'Vergleichsdaten in Array uebernehmen - Zeile statt 3 dann variabel gestalten!
arrRng16er = Sheets("keineWDH16er").Range("$GQ3:$HF3").Value
'Schleife ueber 20 Datensaetze
'Voraussetzung: Schrittweite 1 auf CP2 wie im Beispiel!
'dann koennen die "Schrittzahlen" hier berechnet werden
For iCnt1 = 0 To 19
'Zeilennummer aus CP2 C13 uebernehmen
lrow = Sheets("CP2").Cells(13, 3).Value - iCnt1
'Adresse fuer Zeile auf Blatt Start zusammensetzen
rngaddr = "B" & lrow & ":Q" & lrow
'Daten aus Blatt Start in ein Array uebernehmen
arrRngStart = Sheets("Start").Range(rngaddr).Value
'Schleife zum Vergleich ueber 16 "Spalten"
For iCnt2 = 1 To 16
'Bei Gleichheit Ergebnis 1 "hoch"zaehlen
result = result + (arrRng16er(1, iCnt2) = arrRngStart(1, iCnt2))
'Ende Schleife zum Vergleich ueber 16 "Spalten"
Next
'Ergebnis eintragen - Zeilennummer dann variabel bilden
'Cells(3, 28).Offset(, iCnt1) = -result
'Ergebnis in Array eintragen
arrResults(iCnt1) = -result
'und zuruecksetzen fuer naechste Berechnung
result = 0
'Ende Schleife ueber 20 Datensaetze
Next
'Zeile mit Ergebnissen fuellen
Cells(3, 28).Resize(1, 20) = arrResults
'Hinweis: Bei Formeleintrag per VBA kann man die Formel auch gleich richtig, d.h. ohne INDEX, bilden!
'Range("X3").Formula = "=SUMPRODUCT(--(Start!R28C2:R28C17=R3C199:R3C214)*--(Start!R28C2:R28C17=R3C199:R3C214))"
End Sub
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
erichm
Bin begeistert!!

Hallo schauan,

vielen Dank für den Service. Ich habe jetzt beide Varianten mit den variablen Zeilen (statt Zeile 3) angepasst; ferner habe ich noch ergänzt (was ich bisher bereits hatte):
- Timer
- diverse Application....
- Aktivierung Sheet "keineWDH16er" (falls ein anderes Sheet aktiv ist)
- leeren des Zielbereichs vor neuem Ausfüllen

Wenn man die Zeiten für 10.020 Zeilen und 16 Spalten vergleicht, bedeutet dies:
- mein bisheriger Code: ca. 1,2 Minuten
- Deine erste Test-Variante: ca. 39 Sekunden
- Deine zweite Test-Variante: ca. 19 Sekunden!!

Bevor ich den Code in meine (wesentlich umfangreichere) Projektdatei übertrage und teste, kannst Du vielleicht nochmals kurz drüberschauen:

Sub testVar2()

Dim arrResults(19), iCnt1%, iCnt2%
'Vergleichsdaten in Array uebernehmen - Zeile statt 3 dann variabel gestalten!

Start = Timer
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

' Definiere das Arbeitsblatt zur Aktivierung
Set ws = ThisWorkbook.Sheets("keineWDH16er")

' Bereich AB3 bis AU10020 leeren
ws.Range("AB3:AU10020").ClearContents

For i = 3 To 10020
arrRng16er = Sheets("keineWDH16er").Range(Cells(i, 199), Cells(i, 215)).Value

'Schleife ueber 20 Datensaetze
'Voraussetzung: Schrittweite 1 auf CP2 wie im Beispiel!
'dann koennen die "Schrittzahlen" hier berechnet werden

For iCnt1 = 0 To 19
'Zeilennummer aus CP2 C13 uebernehmen
lrow = Sheets("CP2").Cells(13, 3).Value - iCnt1
'Adresse fuer Zeile auf Blatt Start zusammensetzen
rngaddr = "B" & lrow & ":Q" & lrow
'Daten aus Blatt Start in ein Array uebernehmen
arrRngStart = Sheets("Start").Range(rngaddr).Value
'Schleife zum Vergleich ueber 16 "Spalten"
For iCnt2 = 1 To 16
'Bei Gleichheit Ergebnis 1 "hoch"zaehlen
result = result + (arrRng16er(1, iCnt2) = arrRngStart(1, iCnt2))
'Ende Schleife zum Vergleich ueber 16 "Spalten"
Next
'Ergebnis eintragen - Zeilennummer dann variabel bilden
'Cells(3, 28).Offset(, iCnt1) = -result
'Ergebnis in Array eintragen
arrResults(iCnt1) = -result
'und zuruecksetzen fuer naechste Berechnung
result = 0
'Ende Schleife ueber 20 Datensaetze
Next
'Zeile mit Ergebnissen fuellen
Cells(i, 28).Resize(1, 20) = arrResults

Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Calculation = xlCalculationManual

MsgBox Format(Timer - Start, "#0.00") & "Sekunden" & Time

'Hinweis: Bei Formeleintrag per VBA kann man die Formel auch gleich richtig, d.h. ohne INDEX, bilden!
'Range("X3").Formula = "=SUMPRODUCT(--(Start!R28C2:R28C17=R3C199:R3C214)*--(Start!R28C2:R28C17=R3C199:R3C214))"
End Sub


Bin dann gespannt, wie lange der Code in der Echt-Datei benötigt. Ferner habe ich vielleicht die Möglichkeit weitere Berechnungen (einige mit Zählenwenn) auf VBA umzustellen.

Vielen Dank nochmals.

mfg
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
erichm
Jetzt muss ich den Thread doch nochmals auf offen stellen, da ich eine allgemeine Frage zur Geschwindigkeit von VBA habe:

Meine Anfrage zur Optimierung des Codes ist ja bereits grundsätzlich gelöst; die Musterdatei mit der aktuellen Lösung von schauan stelle ich hier nochmals ein:
https://www.herber.de/bbs/user/168714.xlsm

Wenn ich den Code auf insgesamt 10.020 Zeilen anwende, dauert der Code ca. 19 Sekunden.

Jetzt habe ich den gleichen Code (keinerlei Veränderung!!) in die Originalprojektdatei (ca. 70 MB derzeit) übertragen und 10.020 Zeilen angewendet: dann dauert der Code ca. 36 Minuten???

Es gibt in den Zeilen /Zellen die der Code abarbeitet keinerlei Unterschied zwischen der Muster- und der Projektdatei. In der Projektdatei sind natürlich viel mehr Spalten gefüllt und es gibt viele zusätzliche Tabellenblätter.

Jetzt verstehe ich nicht, dass der Code soviel länger dauert, obwohl er doch das gleiche abarbeiten muss?

Vielen Dank für eine Rückmeldung, ggfls. Erklärung.

mfg
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
Eifeljoi 5
Hallo

Nur als Tipp
Mit etwas Aufwand und Zeit Liese sich dies auch eventuell ohne VBA und ohne Registerformeln lösen mit PQ.
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
schauan
Hallöchen,

Ob da in Deiner Datei trotz Application.Calculation:=xlCalculationManual was passiert - laufen da eventuell Ereignismakros z.B. Worksheet_Change ?

Hier mal die Umsetzung statt zeilenweise 1D-Arrays in 2D-Arrays.

Sub testVar3()

Dim arrResults(1 To 8, 1 To 20), iCnt1%, iCnt2%
'Vergleichsdaten in Array uebernehmen - Zeile statt 3 dann variabel gestalten!

Start = Timer
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

' Definiere das Arbeitsblatt zur Aktivierung
Set ws = ThisWorkbook.Sheets("keineWDH16er")

' Bereich AB3 bis AU10 oder AU10020 leeren
ws.Range("AB3:AU10").ClearContents

'Bereich GQ3:HF10 in 2D Array uebernehmen
arrRng16er = ws.Range(ws.Cells(3, 199), ws.Cells(10, 214)).Value
'Zeilennummer aus CP2!C13 uebernehmen
lrow = Sheets("CP2").Cells(13, 3).Value
'Adresse fuer 20 Zeilen auf Blatt Start zusammensetzen
rngaddr = "B" & lrow & ":Q" & lrow - 19
'Daten aus Blatt Start in ein 2D Array uebernehmen
arrRngStart = Sheets("Start").Range(rngaddr).Value

'Schleife ueber 8 Vergleichszeilen
For i = 1 To 8
'Schleife ueber 20 Datensaetze, beginnend mit hoechster Zeile
'Voraussetzung: Schrittweite 1 auf CP2 wie im Beispiel!
'dann koennen die "Schrittzahlen" hier berechnet werden
For iCnt1 = 20 To 1 Step -1
'Schleife zum Vergleich ueber 16 "Spalten"
For iCnt2 = 1 To 16
'Bei Gleichheit Ergebnis 1 "hoch"zaehlen
result = result + (arrRng16er(i, iCnt2) = arrRngStart(iCnt1, iCnt2))
'Ende Schleife zum Vergleich ueber 16 "Spalten"
Next iCnt2
'Ergebnis in 2D Array eintragen
arrResults(i, 21 - iCnt1) = -result
'und zuruecksetzen fuer naechste Berechnung
result = 0
'Ende Schleife ueber 20 Datensaetze
Next iCnt1
'Ende Schleife ueber 8 Vergleichszeilen
Next i

'Ergebnisbereich mit Ergebnissen fuellen
ws.Cells(3, 28).Resize(8, 20) = arrResults

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

MsgBox Format(Timer - Start, "#0.00") & "Sekunden" & Time

End Sub


Jetzt ist der Code SUPER-Perfekt!!
erichm
Hallo schauan,

nach Einbau der neuen Code-Variante in die große Projektdatei läuft der Code über 10.000 Zeilen in ca. 7 Sekunden(!!!) und die Ergebnisse sind alle richtig (mehrmals getestet)!

Vielen, vielen Dank.

Noch eine Frage:
Ich habe die letzten zwei Tage gegoogelt, um mir doch mehr Kenntnisse mit VBA anzueignen - da gibt es natürlich jede Menge im Netz. Hast Du evtl. Tipps hierzu, welche "quasi für Anfänger" zum lernen gut geeignet sind?

DANKE!

Ich habe mich bisher immer primär auf meine EXCEL-Formeln verlassen weil ich da mehr Sicherheit und Kontrollmöglichkeiten bzgl. der Ergebnisse hatte. Allerdings haben wir einige größere Projektdateien, da würden diverse VBA-Lösungen die Arbeit erleichtern; insofern würden wir da umdenken und ggfls. bei neuen Projektdateien "VBA bereits mitdenken".

mfg
AW: Jetzt ist der Code SUPER-Perfekt!!
schauan
Hallöchen,

freut mich, danke für die Rückmeldung.

Mit dem Lernen ist so eine Sache. In einigen Foren oder angeschlossenen Seiten gibt es Beispiele, wie hier von Hans https://www.herber.de/links.html oder die angeschlossenen Excelformeln https://www.herber.de/excelformeln/ oder im CEF https://www.clever-excel-forum.de/Forum-Beispiele-und-Workshops. Einige Links findest Du z.B. auch dort: https://www.clever-excel-forum.de/Thread-Hinweise-fuer-Fragesteller-c-by-shift-del - wobei da inzwischen auch einige rausgefallen sind oder da https://www.clever-excel-forum.de/Forum-Interessante-Zusatzsoftware-und-Literatur.
Viele Seiten sind von Einzelpersonen, und wenn sich da kein Nachfolger findet verschwinden die irgendwann - über die Jahre hat sich da auch die Forenlandschaft verändert bzw. ausgedünnt. Seiten sind eventuell auch in Teilen veraltet, weil da nur noch die Gebühren gezahlt werden und eine Aktualisierung nicht erfolgt.

Wichtig ist aber auch die praktische Anwendung. Ich hab mich in der Vergangenheit projektbedingt mit Themen beschäftigt, wo ich heute wieder nachschauen müsste.
AW: Jetzt ist der Code SUPER-Perfekt!!
Oberschlumpf
AW: Jetzt ist der Code SUPER-Perfekt!!
erichm
Danke für die Tipps - jetzt ist üben, üben, üben ....angesagt; das war bei den EXCEL-Formeln genauso :)
AW: ... danke für die Korrektur
schauan
... da sind die Satzzeichen "." mit in den Link gerutscht :-(
Danke für die Korrektur owT
erichm
....
AW: Schnelligkeit des Codes optimierbar? (Formel Summenprodukt)
erichm
Hallo,

danke für den Hinweis. Wenn wir das auf PQ umstellen würden, wären da mehrere Auswertungsbereiche betroffen - das ist uns derzeit zuviel Aufwand; zudem müsste evtl. die Grundstruktur der Datei geändert werden.

mfg
AW: Arrays
erichm
Hallo Fennek,

danke für den Hinweis; siehe meine Antwort an schauan.

mfg