Code beschleunigen / Schleife?

Bild

Betrifft: Code beschleunigen / Schleife?
von: Erich M.
Geschrieben am: 21.04.2005 07:29:41
Hallo EXCEL-Freunde,
ich erstelle mit einem Code in bestimmten Zellen Formeln um ein Ergebnis zu erhalten;
damit die Datei "abgespeckt" wird, ersetze ich anschliessend den Bereich
durch kopieren mit Werten. Allerdings erscheint mir der Code noch nicht optimiert
bzgl. der Dauer, da insb. beim kopieren jede Zelle selektiert wird.
Wie könnte ich das verbessern:
Option Explicit
Sub Makro2()
Dim i As Integer
For i = 7 To 40
Cells(i, 19).Formula = _
"=sum(RC[-15]:RC[-10])"
Next i
For i = 7 To 40
Cells(i, 19).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Next i
End Sub


Code eingefügt mit: Excel Code Jeanie

mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com

Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: Klaus-Dieter
Geschrieben am: 21.04.2005 07:48:47
Hallo Erich,
warum läßt du die Berechnung nicht gleich vom Makro ausführen. Der weg mit den Formeln ist meiner Ansicht nach ein wenig "duch die kalte Küche". Ich arbeite da mal was aus.
Viele Grüße
Klaus-Dieter
Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: iven_s
Geschrieben am: 21.04.2005 07:54:34
hallo erich,
ich meine die Schleife brauchst du gar nicht

Sub Makro2()
Range(Cells(7, 19), Cells(40, 19)).Formula = "=sum(RC[-15]:RC[-10])"
Range(Cells(7, 19), Cells(40, 19)).Copy
Range(Cells(7, 19), Cells(40, 19)).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
End Sub

gruß iven_s
Bild

Betrifft: Ergänzung / anpassung möglich?
von: Erich M.
Geschrieben am: 22.04.2005 06:56:14
Hallo iven,
besten Dank funktioniert. Jetzt möchte ich eine Array.Formel verwenden, geht das auch:
Option Explicit
''###### funktioniert:
Sub Makro1()
Dim i As Integer
Application.ScreenUpdating = False
For i = 6 To 1697
Cells(i, 17).FormulaArray = _
"=IF(SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7))>0, SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7)),"""")"
Next i
Range(Cells(6, 17), Cells(1697, 17)).Copy
Range(Cells(6, 17), Cells(1697, 17)).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Application.ScreenUpdating = True
Range("A1").Select
End Sub
''''''''########## welche Anpassung erforderlich ?????????????
Sub iven()
Range(Cells(6, 17), Cells(1697, 17)).FormulaArray = _
"=IF(SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7))>0, SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7)),"""")"
Range(Cells(6, 17), Cells(1697, 17)).Copy
Range(Cells(6, 17), Cells(1697, 17)).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Range("A1").Select
End Sub

Code eingefügt mit: Excel Code Jeanie
Besten Dank nochmal!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Ergänzung / anpassung möglich?
von: Erich M.
Geschrieben am: 22.04.2005 20:52:05
Fortsetzung hier:
https://www.herber.de/index.html?https://www.herber.de/forum/archiv/600to604/t602679.htm
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: Werner Oertli
Geschrieben am: 21.04.2005 07:55:17
Hallo Erich
Das geht auch ohne Schleife.

Sub COPYS()
    Range(Cells(4, 19), Cells(40, 19)).Formula = "=sum(RC[-15]:RC[-10])"
    Range(Cells(4, 19), Cells(40, 19)).Copy
    Range(Cells(4, 19), Cells(40, 19)).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
End Sub

Gruss Werner
Bild

Betrifft: Sorry ...
von: Werner Oertli
Geschrieben am: 21.04.2005 07:58:26
... habe schon bei Zeile 4 angefangen.
Gruss Werner
Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: Erich M.
Geschrieben am: 22.04.2005 06:48:04
Hallo Werner,
danke; siehe meinen Beitrag an iven.
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: Klaus-Dieter
Geschrieben am: 21.04.2005 08:00:57
Hallo Erich,
versuche es mal so:

Sub berechnen()
Dim s, sp As Integer
Dim we As Long
For s = 7 To 40
    For sp = 4 To 9
        we = we + Cells(s, sp)
    Next sp
    Cells(s, 19) = we
Next s
End Sub

Meiner Ansicht nach sind ncht die Schleifen das Problem, sondern die Select-Anweisungen.
Viele Grüße
Klaus-Dieter
Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: Erich M.
Geschrieben am: 22.04.2005 06:47:13
Hallo Klaus-Dieter,
danke, aber bei "we = we ....
erhalte ich Fehlermeldung - Typen unverträglich?

mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: Kurt
Geschrieben am: 21.04.2005 08:05:43
Hallo,
eventuell so:
For i = 7 To 40
Cells(i, 19).Value = Application.WorksheetFunction.Sum(Range(Cells(i, 4), Cells(i, 9)))
Next i
...und Tschüss Kurt
Bild

Betrifft: AW: Code beschleunigen / Schleife?
von: Erich M.
Geschrieben am: 22.04.2005 06:51:09
Hallo Kurt,
danke - funktioniert; siehe meinen Beitrag an iven.
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Code beschleunigen / Schleife?"