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

Neuberechnung automatisch

Neuberechnung automatisch
19.11.2020 12:06:04
Clara
Hallo zusammen,
kann ich grundsätzlich die automatische Neuberechnung von Formeln auch nur für ein spezifisches Worksheet ausschalten? Dort sind sehr rechenintensive Formeln hinterlegt.
Falls nein, muss ich dann über ein solches Marko gehen?
Worksheets("Tabelle3").EnableCalculation = False
Falls ja, wie kann ich das auf das spezielle Tabellenblatt anwenden?
Vielen Dank für Tipps:)
Clara

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neuberechnung automatisch
19.11.2020 13:25:18
Daniel
Hi
Meines Wissens nach geht das nicht.
Ein möglicher Workaround wäre, dass du in dem Blatt die Formeln durch Werte ersetzt.
Damit du die Berechnung bei Bedarf aktualisieren kannst, kopiert du die Formeln vorher in eine zusätzliche Zeile und lässt sie dort stehen. Dann kannst du sie für eine Aktualisierung von dort in die Tabelle kopieren.
Gruß Daniel
AW: Neuberechnung automatisch
19.11.2020 13:32:51
Clara
Danke für die Idee.
Das ist natürlich nicht so sexy, aber vielleicht bastel ich mir einfach ein kleines Makro vor dem Hintergrund.
:)
Erledigt
19.11.2020 14:00:52
Clara

Sub Aktualisieren()
Dim rngBereich As Range
Set rngBereich = Range("A1:O20")
Dim rngZelle As Range
Application.ScreenUpdating = False
For Each rngZelle In rngBereich
'Anlagenummer aktualisieren
If rngZelle.Value = "Anlagenummer" Then
Range(rngZelle.Offset(1, 0), rngZelle.Offset(300, 0)).Select
Selection.FormulaR1C1 = "=IFERROR(AGGREGATE(15,6,Datenbank!R10C3:R50000C3/( _
Datenbank!R10C2:R50000C2=R4C),ROW(R[-4]C[-1])),"""")"
End If
'StB BW zum FYE aktualisieren
If rngZelle.Value = "StB BW zum FYE" Then
Range(rngZelle.Offset(1, 0), rngZelle.Offset(300, 0)).Select
Selection.FormulaR1C1 = "=IFERROR(INDEX(Datenbank!C[5],AGGREGATE(15,6,ROW(Datenbank! _
R10C[-2]:R50000C[-2])/(Datenbank!R10C[-2]:R50000C[-2]=""Ergebnis"")/(ROW(Datenbank!R10C[-2]:R50000C[-2])>MATCH(RC[-3],Datenbank!C[-2],0)),1)),"""")"
End If
'HB BW zum FYE aktualisieren
If rngZelle.Value = "HB BW zum FYE" Then
Range(rngZelle.Offset(1, 0), rngZelle.Offset(300, 0)).Select
Selection.FormulaR1C1 = "=IFERROR(INDEX(Datenbank!C[7],AGGREGATE(15,6,ROW(Datenbank! _
R10C[-3]:R50000C[-3])/(Datenbank!R10C[-3]:R50000C[-3]=""Ergebnis"")/(ROW(Datenbank!R10C[-3]:R50000C[-3])>MATCH(RC[-4],Datenbank!C[-3],0)),1)),"""")"
End If
Next
'Hardcoding
Range("A4:J304").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,  _
Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
Erledigt!
19.11.2020 14:01:51
Clara

Sub Aktualisieren()
Dim rngBereich As Range
Set rngBereich = Range("A1:O20")
Dim rngZelle As Range
Application.ScreenUpdating = False
For Each rngZelle In rngBereich
'Anlagenummer aktualisieren
If rngZelle.Value = "Anlagenummer" Then
Range(rngZelle.Offset(1, 0), rngZelle.Offset(300, 0)).Select
Selection.FormulaR1C1 = "=IFERROR(AGGREGATE(15,6,Datenbank!R10C3:R50000C3/( _
Datenbank!R10C2:R50000C2=R4C),ROW(R[-4]C[-1])),"""")"
End If
'StB BW zum FYE aktualisieren
If rngZelle.Value = "StB BW zum FYE" Then
Range(rngZelle.Offset(1, 0), rngZelle.Offset(300, 0)).Select
Selection.FormulaR1C1 = "=IFERROR(INDEX(Datenbank!C[5],AGGREGATE(15,6,ROW(Datenbank! _
R10C[-2]:R50000C[-2])/(Datenbank!R10C[-2]:R50000C[-2]=""Ergebnis"")/(ROW(Datenbank!R10C[-2]:R50000C[-2])>MATCH(RC[-3],Datenbank!C[-2],0)),1)),"""")"
End If
'HB BW zum FYE aktualisieren
If rngZelle.Value = "HB BW zum FYE" Then
Range(rngZelle.Offset(1, 0), rngZelle.Offset(300, 0)).Select
Selection.FormulaR1C1 = "=IFERROR(INDEX(Datenbank!C[7],AGGREGATE(15,6,ROW(Datenbank! _
R10C[-3]:R50000C[-3])/(Datenbank!R10C[-3]:R50000C[-3]=""Ergebnis"")/(ROW(Datenbank!R10C[-3]:R50000C[-3])>MATCH(RC[-4],Datenbank!C[-3],0)),1)),"""")"
End If
Next
'Hardcoding
Range("A4:J304").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,  _
Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Erledigt!
19.11.2020 15:07:44
Daniel
so natürlich auch.
aber das 50.000 als Zeilennummer im Aggregat sieht mir nach einem Pauschalwert aus.
wenn du sowieso ein Makro einsetzt, dann ermittle doch diese Zeilennummer im Makro und setze sie in die Formel ein.
Wenn du weniger als 50.000 Zeilen hast, geht die Berechnung schneller, wenns auch mehr sein können, bist du sicher dass alle Zeilen berücksichtigtwerden.
das macht man idealerweise so:
1. die Formel wird in eine Variable geschrieben, dabei erstetzt man die Zeilennummer durch einen Dummy-Text, der in der Formel sonst nicht vorkommt (z.B. "xxx")
2. ermittle die letzte benutze Zeile in "Datenbank" und tausche dann in der FormelVariablen den Dummy-Text durch die ermittelte Zeilennummer aus, bevor du die Formel in die Zelle schreibst:
dim Ze as Long
dim FO as string
FO = "=IFERROR(AGGREGATE(15,6,Datenbank!R10C3:RxxxC3/(Datenbank!R10C2:RxxxC2=R4C),ROW(R[-4]C[-1] _
)),"""")"
Ze = Sheets("Datenbank").Cells(Rows.Count, 3).End(xlup).row
FO = Replace(FO, "xxx", Ze)
Range(rngZelle.Offset(1, 0), rngZelle.Offset(300, 0)).FormulaR1C1 = FO
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige