Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formel nur einmal berechnen

Formel nur einmal berechnen
25.02.2009 16:39:21
Andre
Hallo!!
Ich habe eine Spalte mit Zellen in denen eine Formel steht die sich aber nur einmal berechnen soll, da sich der Bezug aus dem sich die Formel zusammensetzt hin und wieder ändert. Darum soll das Ergebnis nur einmal berechnet werden. Ändert sich nun aber der Wert in der Bezugszelle, ändern sich auch alle vorherigen Berechnungen.
Kann man eine Zelle / Formel so einstellen das sie nur einmal Berechnet wird?
Danke im Vorraus
Gruß Andre
Anzeige

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel nur einmal berechnen
25.02.2009 16:48:30
Daniel
Hi
nach dem Berechnen den Wert mit KOPIEREN - INHALTE Einfügen - WERTE fixieren.
das wäre jetzt das einzige, was mir dazu einfällt.
Gruß, Daniel
AW: Formel nur einmal berechnen
25.02.2009 16:51:43
Andre
Hey Daniel!!
Ja, danke.
Hätte es aber ganz gern automatisch.
Gruß Andre
AW: Formel nur einmal berechnen
25.02.2009 16:56:35
Uwe
Hi Andre,
das ließe sich wahrscheinlich mit VBA über das Change-Ereignis lösen, dass immer dann reagiert, wenn in den Quellzellen etwas geändert wird. Problem ist, dass ja erstmal was in die Quellzellen eingetragen werden muss, und die Formelzellen erst danach eingefroren werden darf. Müsste aber lösbar sein.
Dazu wäre es sehr hilfreich, wenn Du eine Beispieltabelle hochlädst, und vielleich noch erklärst woher die Quelldaten kommen und wann die Formel eingefroren werden soll.
Gruß
Uwe
(:o)
Anzeige
AW: Formel nur einmal berechnen
25.02.2009 17:03:54
Andre
Hey Uwe!!
Leider funzt es bei mir nicht mit dem Hochladen.
In der Quellzelle steht immer ein Wert, und zwar der aktuelle Strompreis. Wenn sich der Preis nun ändert möchte ich nicht, daß die alten Berechnungen mit geändert werden. Die nehmen dann nämlich auch den aktuellsten Strompreis an.
Es würde mir also reichen, wenn die Formel nach der ersten Berechnung außer Betrieb geht.
Könnte dir die Tabelle per Mail schicken.
Danke im Vorraus.
Anzeige
AW: Formel nur einmal berechnen
25.02.2009 16:59:37
Daniel
Hi
dann ist die Formel nach der Eingabe sofort weg ohne Chance auf korrektur (dh nur durch vollständige Neueingabe)
willst du das?
Gruß, Daniel
AW: Formel nur einmal berechnen
25.02.2009 17:05:09
Andre
Hey Daniel!!
Ist kein Problem wenn die Formel weg ist!!
schreib doch die Berechnung gleich per VBA ...
25.02.2009 17:01:33
Josef
...in die Zelle, wenn sich in der Eingabezelle was ändert.
Gruß Sepp

Anzeige
AW: schreib doch die Berechnung gleich per VBA ...
25.02.2009 17:07:26
Andre
Hallo Sepp!!
Wie sieht die Formel den per VBA aus?
Gruß Andre
Meine Glaskugel ist zersprungen, deshalb...
25.02.2009 17:10:14
Josef
...weiss ich nicht wie deine Formel aussieht, wenn du mir das verrätst, dann kann ich dir zeigen, wie die Berechnung per VBA aussieht.
Beschreibe aber auch wo die Formel steht und welche Zelle den Eintrag der berechnung auslösen soll.
Gruß Sepp

Anzeige
AW: Meine Glaskugel ist zersprungen, deshalb...
25.02.2009 17:14:51
Andre
Hier die Formel:
=WENN(B6"";Preisentwicklung!D5;"")
Die Formel steht in der Spalte D
Sobalt in der Zelle B6 ein Eintrag vorgenommen wird holt sich die Zelle in Spalte D den aktuellen Strompreis aus dem Arbeitsblatt Preisentwicklung Zelle D5.
Danke im Vorraus
AW: Meine Glaskugel ist zersprungen, deshalb...
25.02.2009 17:22:49
Josef
Hallo Andre,
ins Modul der Tabelle.
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo ErrExit
  If Column = 2 And Target.Count = 1 Then
    Application.EnableEvents = False
    Target.Offset(0, 2) = Sheets("Preisentwicklung").Range("D5")
  End If
  ErrExit:
  Application.EnableEvents = True
End Sub

Gruß Sepp

Anzeige
AW: Meine Glaskugel ist zersprungen, deshalb...
25.02.2009 17:31:37
Andre
Hallo Sepp!!
Es kommt immer eine Fehlermeldung.
Ich könnte dir die Tabelle per Mail zuschicken, leider funzt das Hochladen bei mir nicht.
Gruß Andre
mailadresse steht im Profil! o.T.
25.02.2009 17:32:38
Josef
Gruß Sepp

AW: mailadresse steht im Profil! o.T.
25.02.2009 17:45:38
Andre
Hallo!!
Hatte ein "ä" in meinem Dateinamen, deshalb hat es nicht mit dem Hochladen funktioniert.
Hier also die Datei.
https://www.herber.de/bbs/user/59779.xls
Anzeige
AW: mailadresse steht im Profil! o.T.
25.02.2009 18:14:22
Uwe
Hi Andre,
wenn Du Sepps Code an den schon existieren in dem Tabellenblatt anhängst, sodass das Modul des Tabellenblattes so aussieht:

Private Sub Worksheet_Change(ByVal Target As Range)
Const Bereich = "A4:A52,B4:B52,H4:H52" 'Bereich, der überwacht werden soll (anpassen)
Dim rng As Range, z As Range
Set rng = Intersect(Target, Range(Bereich))
If Not rng Is Nothing Then
If rng(1).Value  "" Then 'damit man die Zelle nicht durch die Entf-Taste sperren kann
Me.Unprotect Password:="feuer1"
rng.Locked = True
Me.Protect Password:="feuer1"
End If
End If
On Error GoTo ErrExit
If Target.Column = 2 And Target.Count = 1 Then
Application.EnableEvents = False
Target.Offset(0, 2) = Sheets("Preisentwicklung").Range("D5")
End If
ErrExit:
Application.EnableEvents = True
End Sub


dann funktioniert es meiner Meinung nach so wie Du es beschrieben hast. Oder?
@Sepp: Ich hoffe Du bist nicht böse, dass ich mich mit "eingeklingt" habe.
Gruß
Uwe
(:o)

Anzeige
AW: mailadresse steht im Profil! o.T.
25.02.2009 18:22:04
Andre
Leider nein!!
Die Bezugszelle ist D5 im Tabellenblatt Preisentwicklung.
Sobalt sich dieser Wert ändert, ändern sich auch die Ergebnisse der Berechnungen der Vormonate.
Es soll z.B. in Zelle D6 die jetztigen 0,2037 € stehen bleiben, wenn sich die Zelle D5 im Tabellenblatt Preisentwicklung ändert.
Gruß Andre
Anzeige
AW: Meine Glaskugel ist zersprungen, deshalb...
25.02.2009 17:36:14
Uwe
Hi Andre,
ich denke Sepp hat da ein Target. vergessen. Die dritte Zeile sollte so aussehen:

If Target.Column = 2 And Target.Count = 1 Then


Dann kommt keine Fehlermeldung mehr.
Gruß
Uwe
(:o)

Besser so.
25.02.2009 17:25:07
Josef
Hallo nochmal,
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo ErrExit
  If Column = 2 And Target.Count = 1 Then
    Application.EnableEvents = False
    If Target <> "" Then Target.Offset(0, 2) = Sheets("Preisentwicklung").Range("D5")
  End If
  ErrExit:
  Application.EnableEvents = True
End Sub

Gruß Sepp

Anzeige
AW: Besser so.
25.02.2009 21:01:12
Andre
Hallo Sepp!!
Ich bin´s nochmal!
Hast du event. noch ne Lösung für mich?
Bis jetzt haut es noch nicht hin.
https://www.herber.de/bbs/user/59788.xls
Gruß Andre
AW: Besser so.
25.02.2009 22:10:47
Bahnhof
Hallo Andre,
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Const Bereich = "A4:A52,B4:B52,H4:H52" 'Bereich, der überwacht werden soll (anpassen)

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo ErrExit
  If Not Intersect(Target, Range(Bereich)) Is Nothing Then
    Application.EnableEvents = False
    With Target
      If .Count = 1 Then
        If .Value <> "" Then 'damit man die Zelle nicht durch die Entf-Taste sperren kann
          Me.Unprotect Password:="feuer1"
          Target.Locked = True
          
          If .Column = 2 Then .Offset(0, 2) = Sheets("Preisentwicklung").Range("D5")
          
          Me.Protect Password:="feuer1"
        End If
      End If
    End With
  End If
  ErrExit:
  Application.EnableEvents = True
End Sub

Gruß Sepp

Anzeige
AW: Besser so.
25.02.2009 22:49:01
Andre
Hallo!!
Ich danke dir!!
Es klappt!! Ich werd verrückt!!
Besten Dank an alle!!!
AW: schreib doch die Berechnung gleich per VBA ...
25.02.2009 17:25:07
Daniel
Hi
hier mal ne Formel- und VBA-Lösung
https://www.herber.de/bbs/user/59775.xls
die Formellösung hätte den Vorteil, daß du die Preisentwicklung gleich mitdokumentierst (bzw musst)
und so deine Berechnungen auch nachträglich machen kannst.
gruß, Daniel
Anzeige
AW: schreib doch die Berechnung gleich per VBA ...
25.02.2009 18:04:57
Andre
Hallo Daniel!!
Habe jetzt die Datei für dich!!
Komme mit deinem Vorschlag nicht so ganz klar.
https://www.herber.de/bbs/user/59782.xls
Gruß Andre
AW: schreib doch die Berechnung gleich per VBA ...
25.02.2009 18:53:01
Daniel
Hi
dabei ist mein Vorschlag genau das richtige für dich.
Lieder kann ich es auf Grund des Schreibschutzes und des fehlenden Passwortes die Datei nicht ändern, aber wenn du in dem Tabellenblatt "Preisentwicklung" in der Spalte A das Datum als richtiges Datum einträgst (also nur "1.7.2005" und nicht "1.7.2005 bis 31.12.2007") dann kannst du im Tabellenblatt "Strom" und "Verbrauch" die zum Datum gehörigen Preise problemlos mit dem SVERWEIS aus der Preisentwicklungstabelle lesen.
falls du doch lieber einen Fix-Wert für den Strompreis haben willst und zu faul bist, diesen von Hand aus der Liste zu kopieren und lieber uns damit belästigts, würde ich einfach dieses Makro in die Tabellenblätter "Strom" und "Verbrauch" kopieren, dann wird per Doppelklick in die Zelle der aktuelle Strompreis eingetragen:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Cells(3, Target.Column).Value = "Preis pro KWh in €" Then
Target.Value = Sheets("Preisentwicklung").Range("D5").Text
Cancel = True
End If
End Sub


Gruß, Daniel

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Formel nur einmal berechnen in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Formel so einzustellen, dass sie nur einmal berechnet wird, kannst Du folgenden VBA-Code verwenden. Dieser Code reagiert auf Änderungen in einer bestimmten Zelle und berechnet den Wert nur einmal:

  1. Öffne das Excel-Dokument und gehe zum entsprechenden Arbeitsblatt, in dem sich Deine Formel befindet.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge den folgenden Code in das Modul des Arbeitsblatts ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Column = 2 And Target.Count = 1 Then
           Application.EnableEvents = False
           Target.Offset(0, 2) = Sheets("Preisentwicklung").Range("D5").Value
           Target.Locked = True
           Me.Protect Password:="feuer1"
       End If
       Application.EnableEvents = True
    End Sub
  4. Passe die Target.Offset(0, 2) an, um die Zelle zu definieren, in der das Ergebnis gespeichert werden soll.

  5. Stelle sicher, dass die Zelle, die die Formel enthält, nicht mehr bearbeitet werden kann, indem Du sie sperrst.

Diese Methode sorgt dafür, dass der Wert nur einmal berechnet wird und nicht mehr verändert werden kann, selbst wenn sich der Bezug in der Quellzelle ändert.


Häufige Fehler und Lösungen

  • Fehlermeldung bei der Eingabe: Wenn Du eine Fehlermeldung erhältst, überprüfe, ob Du den Code korrekt in das richtige Modul eingefügt hast. Achte darauf, dass die Zelle, die überwacht wird (in diesem Fall Spalte 2), korrekt angegeben ist.

  • Formel wird nicht korrekt berechnet: Stelle sicher, dass Du die Berechnung in der richtigen Zelle speicherst. Überprüfe den Zellbezug in Target.Offset(0, 2).


Alternative Methoden

Falls Du die VBA-Methode nicht verwenden möchtest, kannst Du auch manuell einen Wert aus einer Zelle kopieren und ihn als Wert in eine andere Zelle einfügen:

  1. Berechne die Formel in der Zelle.
  2. Kopiere die Zelle.
  3. Rechtsklicke auf die Zielzelle und wähle „Inhalte einfügen“ > „Werte“.

Das ist zwar nicht automatisch, aber eine einfache Lösung, um die Berechnung auf einen bestimmten Wert festzulegen.


Praktische Beispiele

Wenn Du beispielsweise den Stromverbrauch berechnen möchtest, kannst Du eine Formel wie diese verwenden:

=WENN(B6<>"", Preisentwicklung!D5, "")

Hier wird geprüft, ob in Zelle B6 ein Wert vorhanden ist. Wenn ja, wird der aktuelle Strompreis aus dem Arbeitsblatt „Preisentwicklung“ in Zelle D5 gezogen. Um sicherzustellen, dass dieser Wert nicht mehr verändert wird, kannst Du die oben beschriebene VBA-Methode verwenden.


Tipps für Profis

  • Nutzung von $ in Formeln: Wenn Du Zellbezüge in Formeln verwendest, kannst Du die $-Zeichen verwenden, um absolute Bezüge zu erstellen. Dies ist besonders nützlich, wenn Du die Formel in andere Zellen kopieren möchtest, ohne dass sich der Bezug ändert.

  • Statische Berechnung: Um eine statische Berechnung zu erhalten, kannst Du den Wert nach der Berechnung in eine separate Zelle kopieren und nur diesen Wert für zukünftige Berechnungen verwenden.


FAQ: Häufige Fragen

1. Wie kann ich eine Formel in Excel nur einmal berechnen? Verwende VBA, um die Berechnung nur beim ersten Eingeben eines Wertes in die Quellzelle auszulösen.

2. Was passiert, wenn ich die Bezugszelle ändere? Wenn Du die VBA-Methode verwendest, bleibt der einmal berechnete Wert unverändert, auch wenn sich der Wert in der Bezugszelle ändert.

3. Ist es möglich, das Ganze ohne VBA zu lösen? Ja, Du kannst den berechneten Wert manuell in eine andere Zelle als Wert einfügen. Das ist jedoch nicht automatisch und erfordert manuelles Eingreifen.

4. Welche Excel-Version benötige ich für diese Methoden? Die beschriebenen Methoden funktionieren in den meisten modernen Excel-Versionen, einschließlich Excel 2010 und später.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige