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

Range.Value / Paste.Spezial extrem langsam

Range.Value / Paste.Spezial extrem langsam
12.11.2013 14:09:12
Thorben
Hallo Forumfreunde,
ich versuch gerade einen Weg zu finden der meine Formelwerte aus ziemlich
dicken Fischen in Werte umwandelt:
Die Formeln:
In N2 bis N50000
=WENN(ODER((M2"")*(M3="");I2I3);(-SUMME($M$1:M2)-SUMME($N$1:N1));"")
In O2 bis O50000
=WENN(I2I3;-SUMME($M$2:M2)-SUMME($O$1:O1);"")
In U2 bis U50000
{=ABS(SUMME(WENN(($I$1:I2=I2)*($C$1:C2=C2)*($P$1:P2="X")*1=1;$M$1:M2;0)))}
-
Formeln werden runterkopiert mit:
Dim lngLetzte As Long
lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1
.Range(.Cells(2, 14), Cells(lngLetzte, 14)).Formula = .Cells(2, 14).Formula
.Range(.Cells(2, 15), Cells(lngLetzte, 15)).Formula = .Cells(2, 15).Formula
Range("U2:U" & Cells(Rows.Count, "A").End(xlUp).Row).FillDown ' ist ja ne Array
-
Meine kläglichen Versuche der Wertübernahme:
der Standard:
--------------
Columns("N:N").Select - je nach Spalte!
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
der Andere:
--------------
Range("N2:N30000") = Range("N2:N30000").Value
der vermeintlich Bessere:
--------------
Dim objCell As Range
For Each objCell In Range("N2:N30000")
If objCell.HasFormula Then objCell.Value = objCell.Value
Next
Keiner packt es, ohne das ich zwischendurch die "ick bin dein Vadder" Trilogie angucken kann und am Ende verzweifelt auf ESC hämmere!!!
Kann mir jemand helfen, ich hab die Trilogien jetzt schon 20x durch :-)
Vielen lieben Dank schon einmal im Voraus
MfG
Thorben

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range.Value / Paste.Spezial extrem langsam
12.11.2013 15:05:29
Rudi
Hallo,
ich hab die Trilogien jetzt schon 20x durch
kann man doch gar nicht oft genug sehen.
Sub aaa()
Dim arr
With Range("U2:U50000")
arr = .Value
.Value = arr
End With
With Range("N2:O50000")
arr = .Value
.Value = arr
End With
End Sub

Dim arr -nach 15min in Spalte N noch nicht fertig!
12.11.2013 15:47:39
Thorben
Hallo Rudi,
Danke erstmal, geht bei einigen anderen Formel tatsächlich flott ab.
Bei mir geht deine Dim arr aber schon in Spalte N in die Knie.
Das ist echt komisch. Die Berechnung in N mit o.g. Formel ist in 2sek erledigt.
Die Übernahme der Werte dauert aber extrem lang.
Nach 15min hab ich jetzt abgebrochen!
Kennst Du noch eine andere Möglichkeit?
Danke
Thorben

Anzeige
AW: Dim arr -nach 15min in Spalte N noch nicht fertig!
12.11.2013 17:00:46
Tino
Hallo,
evtl. noch andere Berechnungen in der Tabelle?
Bedingte Firmatierung?
Andere Formeln die evtl. Volatil sind und auf jede eingabe reagieren?
Stell mal die berechnung auf manuell ein.
Gruß Tino

Sub läut jetzt - @Tino, mach ich nachher mal
12.11.2013 17:22:21
Thorben
Tino / Thorben
Jupp von K2 bis AC28000 (aktuell) stehen Formeln deren
Ergebnis untereinander von rechts nach links abhängig ist.
Also das Ergebnis in L2 ist abhängig vom Ergebnis in K2, das von M2 von L2 und usw.
Ich habe die Reihenfolge jetzt mal umgekehrt und die Werte mit Spalte AC beginnend übernommen.
Die Sub ist gerade fertig geworden ca. 1Std. hat es jetzt gedauert.
Auf Manuell probiere ich gleich mal aus. Verdammt wenn es daran gelegen hat fress ich n Besen!!!
Bis später
Thorben

Anzeige
Automatik = 1Std , Manuell = 45min - !@Tino
12.11.2013 23:56:28
Thorben
Hi alle,
also wenn ich am Ende der Berechnung auf
Application.Calculation = xlCalculationManual stelle und die Dim arr anwende dann dauert es nur noch 45min statt 1Std.
Ist noch ok obwohl ich nicht wirklich verstehe warum selbst auf manuell diese Formeln so hart im Wind stehen.
Auf manuell sind Formeln doch insich in einer Art lebloser Zustand, oder etwa nicht?
Vielleicht hat ja noch jemand was in der Trickkiste fürs Werte übernehmen, selbst bei hartnäckigen Formeln :-)
Schönen Abend noch
Gruß
Thorben

AW: Automatik = 1Std , Manuell = 45min - !@Tino
13.11.2013 13:50:21
Tino
Hallo,
sind in Deiner Datei noch Event-Makros z. Bsp. Worksheet_Change?
Hast Du es mal an einer neuen Datei versucht ob es dort schneller geht?
Evtl. mal so testen, anstatt .Value mal .Value2 verwenden (beachte auch die Hilfe dazu),
kann schnelle in Array schreiben.
Sub aaa()
Dim arr()
Dim iCalc%

With Application
    iCalc = .Calculation
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
    
        With Range("U2:U50000")
          arr = .Value2
          .Value2 = arr
        End With
        With Range("N2:O50000")
          arr = .Value2
          .Value2 = arr
        End With
    
    .Calculation = iCalc
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub
Gruß Tino

Anzeige
AW: Automatik = 1Std , Manuell = 45min - !@Tino
18.11.2013 14:27:04
Thorben
Hallo Tino,
ich hab ein bischen gebraucht zum testen, aber es läuft gefühlt und gemessen schneller.
Bin jetzt von 45min auf gute 33min gekommen!
Den wirklichen Unterschied zwischen .value und .value2 habe ich zwar soweit verstanden aber nicht kappiert wie die dadurch schneller in Arrays rechnen können aber damit kann ich leben.
Vielen Dank nochmal für Eure Hilfe
MfG
Thorben

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige