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

Formel berechnen

Formel berechnen
27.12.2002 13:55:16
Heinz
Hallo,

in eine Tabelle kopiere ich innerhalb einer Schleife eine Formel einer Zelle in eine andere. Die Ausführungszeit steigt mit der Anzahl der bereitsabgearbeiteten Zellen an. Ich mutmaße, daß Excel bei jeder Formel erstmalig eine Berechnung durchführt. Versuche, dieses durch Einstellungen wie z.B. Berechnungen nur vorm Speichern zu unterbinden brachten nichts. Ich möchte die Berechnung der Formeln nur beim Spiechern durchführen, nicht aber während des Kopierens. Weiß jemand Rat?

Vielen Dank und alles Gute für 2003.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Formel berechnen
27.12.2002 13:58:15
andre
hallo heinz,
wenn du das calculate auf vor dem speichern stellst sollte das schon passen.
ansonsten die formal nicht per schleife kopieren, sondern in den kompletten bereich!
zusätzlich das bildschirmaktualisieren ausschalten und hinterher wieder an.
gruss andre
Re: Formel berechnen
27.12.2002 14:05:58
Heinz
Hallo André,
Die Einstellung Berechnen vorm Speichern brachte leider keinen Erfolg.- Bei der Formel handelt es sich um TEILERGEBNIS; vielleicht liegt hier der Hase im Pfeffer. Da mir die Tabellengröße nicht bekant ist, muß ich über eien Schleife gehen; hast Du noch eine andere Idee?

Gruß,

HS

Re: Formel berechnen
27.12.2002 14:14:45
andre
hallo heinz,
die tabellengrösse ließe sich doch aber ermitteln?
erste zelle - letzte zelle - kompliziert wirds höchstens, wenn leere zellen dazwischen sind.
also erste zelle z.b. d2 - weil d1 die überschrift hat, letzte zelle ist die allerletzte ausgefüllte in d (oder irgendwo anders), z.b. mit
Zeile = Cells(Rows.Count, 4).End(xlUp).Row '4 für spalte d
und dann die formel in den dazwischenliegenden bereich.
gruss andre
Anzeige
Re: Formel berechnen
27.12.2002 14:23:34
Heinz
Hallo André,

die Größe läßt sich schon ermitteln, zwischen den Zellen, die die neue Formel beeinhalten sollen liegen aber Lücken sowohl horizontal als auch vertikal.

Gruß,

Heinz

Re: Formel berechnen
27.12.2002 14:23:47
andre
hallo heinz,
hier mal der komplette code.
in abhängigkeit von spalte b werden in d die formaln eingetragen - hier mal nur einfach eine adition von a+b

gruss andre

Re: Formel berechnen
27.12.2002 14:38:21
andre
hallo heinz,
um nei meinem beispiel zu bleiben - hier eine variante mit "Leerstellen" in b:

in der if-bedingung können natürlich weitere argumente eingefügt werden, ob z.b. in weiteren spalten nichts steht und demzufolge die formel keinen zweck hat.

gruss andre

Anzeige
Re: Formel berechnen
27.12.2002 15:50:10
Heinz
Hallo André,

erstmal vielen Dank für Deine Mühen; nachfolgend der Code aus meinem Makro, vielleicht wird darin die Problematik deutlich...

Cells.Select

Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(5, 6), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(5, 6), Replace:=False, PageBreaks:=False, SummaryBelowData:=True


' Application.ScreenUpdating = False
e3 = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row ' letzte Zeile bestimmen
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column ' letzte Spalte bestimmen

For i2 = 2 To e3
Set zelle = Cells(i2, 5)
If zelle.HasFormula Then
If Left(zelle.FormulaLocal, 13) = "=TEILERGEBNIS" Then
' kopiert Formel mit relativem bezug
' sehr langsam, Übergangslösung!
' HIER NACHARBEITEN!
' Kopie Teilergebnisse aus Spalte 5 nach 7
Cells(i2, 5).Select
Selection.Copy
Cells(i2, 7).Select
ActiveSheet.Paste

' Erzeugen der ersten Formel für (Angeboten - Abweichung)
' Formel erzeugen
Dim Wo As String
Wo = "=G" & i2 & "-H" & i2
Cells(i2, 9).Formula = Wo


' Kopiere den Rest
For Spalten = 10 To LetzteSpalte Step 3

Cells(i2, 5).Select
Selection.Copy
Cells(i2, Spalten).Select
ActiveSheet.Paste


Cells(i2, 9).Select
Selection.Copy
Cells(i2, Spalten + 2).Select
ActiveSheet.Paste

Next Spalten
End If
End If
Next i2

Anzeige
Re: Formel berechnen
27.12.2002 16:21:32
andre
hallo heinz,
erst mal zur "schnellen" optimierung -
mal nicht so viel selecten. die formeln kannst du auch so übernehmen:
[e16].FormulaR1C1 = [D16].FormulaR1C1
oder in deinem code z.b.
Cells(i2, 5).FormulaR1C1 = Cells(i2, 7).FormulaR1C1
mal sehn, ob mir noch was einfällt. schreib trotzdem mal, ob's schneller wird.
gruss andre
Re: Formel berechnen
03.01.2003 09:47:16
Heinz
Hallo Andre,

vielen Dank für Deine Hilfe. Das Problem konnte dank Deiner Hilfe gelöst werden. Das Makro erzeugt nun ein Sheet von 16 MB, das danach nichtz mehr in Excel geladen werden (Siehe vielleicht auch meinen neuen Eintrag)
Nochmals vielen Dank und alles Gute für 2003.
Gruß,

Heinz

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige