Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
600to604
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
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code beschleunigen / Schleife?

Code beschleunigen / Schleife?
21.04.2005 07:29:41
Erich
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

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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code beschleunigen / Schleife?
21.04.2005 07:48:47
Klaus-Dieter
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
AW: Code beschleunigen / Schleife?
21.04.2005 07:54:34
iven_s
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
Ergänzung / anpassung möglich?
22.04.2005 06:56:14
Erich
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

Besten Dank nochmal!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Anzeige
AW: Code beschleunigen / Schleife?
21.04.2005 07:55:17
Werner
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
Anzeige
Sorry ...
21.04.2005 07:58:26
Werner
... habe schon bei Zeile 4 angefangen.
Gruss Werner
AW: Code beschleunigen / Schleife?
22.04.2005 06:48:04
Erich
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
AW: Code beschleunigen / Schleife?
21.04.2005 08:00:57
Klaus-Dieter
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
Anzeige
AW: Code beschleunigen / Schleife?
22.04.2005 06:47:13
Erich
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
AW: Code beschleunigen / Schleife?
21.04.2005 08:05:43
Kurt
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
AW: Code beschleunigen / Schleife?
22.04.2005 06:51:09
Erich
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige