TeamViewer Motive 3

Formel für Excel gesucht ...

brody67

Cadet 3rd Year
Registriert
Apr. 2026
Beiträge
36
Hallo,
vielleicht kann jemand helfen?

Ich möchte in Excel gerne Folgendes umsetzen:

1. Eine Zahl, welche in Zelle B5 steht, soll um eine Zahl reduziert werden, die in Zelle B12 eingegeben wird.

2. Das Ergebnis soll in Zelle C6 angezeigt und gespeichert werden, auch dann, wenn die zuvor eingegebene Zahl in Zelle B12 wieder gelöscht wird.

3. Bei einer neuen Zahleneingabe in Zelle B12 soll der obige Vorgang erneut durchlaufen werden und das neue Ergebnis wieder in Zelle C6 abgespeichert werden.


Frage: Lässt sich so etwas in Excel umsetzen?

Lieben Dank!
 
Hab deine Frage mal 1:1 in ChatGPT und Gemini eingegeben und dort ist die passendste Lösung folgende:

Gemini:

Methode 2: Die saubere Lösung (VBA-Makro)

Dies ist der Standardweg für dein Vorhaben. Ein kleines Skript im Hintergrund sorgt dafür, dass der Wert in C6 nur dann geändert wird, wenn du aktiv etwas in B12 eingibst.

Schritt-für-Schritt-Anleitung:

  1. Drücke ALT + F11, um den Editor zu öffnen.
  2. Suche links im Projekt-Explorer deine Tabelle (z. B. "Tabelle1") und mache einen Doppelklick darauf.
  3. Kopiere den folgenden Code in das weiße Fenster:
VBA

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Prüfen, ob die Änderung in Zelle B12 passiert ist
    If Not Intersect(Target, Me.Range("B12")) Is Nothing Then
        
        ' Falls B12 leer ist (gelöscht wurde), mache nichts
        If Target.Value = "" Then Exit Sub
        
        ' Falls C6 noch leer ist, nimm B5 als Startwert
        If Me.Range("C6").Value = "" Then
            Me.Range("C6").Value = Me.Range("B5").Value - Target.Value
        Else
            ' Ansonsten: Ziehe B12 vom aktuellen C6-Wert ab
            Me.Range("C6").Value = Me.Range("C6").Value - Target.Value
        End If
        
        ' Optional: B12 nach der Eingabe automatisch leeren
        ' Application.EnableEvents = False
        ' Target.ClearContents
        ' Application.EnableEvents = True
        
    End If
End Sub
  1. Schließe den Editor.
  2. Wichtig: Speichere die Datei als Excel-Arbeitsmappe mit Makros (.xlsm) ab, sonst geht der Code verloren.

ChatGPT:

Option 3 (empfohlen): VBA-Lösung

Das ist die sauberste Variante für dein Verhalten.

So geht’s:
  1. Rechtsklick auf das Tabellenblatt → „Code anzeigen“
  2. Diesen Code einfügen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B12")) Is Nothing Then
        Application.EnableEvents = False
        
        If Range("C6").Value = "" Then
            Range("C6").Value = Range("B5").Value
        End If
        
        If Range("B12").Value <> "" Then
            Range("C6").Value = Range("C6").Value - Range("B12").Value
        End If
        
        Application.EnableEvents = True
    End If
End Sub

💡 Ergebnis:
  • Erste Eingabe → B5 wird als Startwert genommen
  • Jede neue Zahl in B12 → wird von C6 abgezogen
  • Löschen von B12 → ändert nichts mehr
  • Neue Eingabe → wird wieder abgezogen

Man mag ja KI bei vielen Dingen verteufeln (mach ich auch) aber es gibt Dinge, da ist es wirklich praktisch und kann einem helfen.
 
  • Gefällt mir
Reaktionen: herrStreusalz, nutrix und brody67
Claudes Antwort:

Ja, das lässt sich umsetzen – allerdings nicht mit einer normalen Formel, sondern nur mit einem kleinen VBA-Makro. Der Grund: Eine Formel in C6 würde ihren Wert verlieren, sobald B12 geleert wird. VBA kann stattdessen den errechneten Wert fest in die Zelle schreiben.

Hier ist die Lösung:

Schritt 1: Rechtsklick auf den Tabellenreiter (z. B. „Tabelle1") → Code anzeigen

Schritt 2: Folgenden Code einfügen:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$12" Then
        If IsNumeric(Target.Value) And Target.Value <> "" Then
            If IsNumeric(Range("B5").Value) Then
                Range("C6").Value = Range("B5").Value - Target.Value
            End If
        End If
    End If
End Sub

Was der Code macht:

  • Er reagiert automatisch, sobald sich etwas in B12 ändert.
  • Nur wenn in B12 eine Zahl steht (nicht leer, nicht Text), wird gerechnet.
  • Das Ergebnis (B5 minus B12) wird als fester Wert in C6 eingetragen.
  • Wird B12 danach geleert, bleibt der letzte Wert in C6 erhalten.
  • Wird eine neue Zahl in B12 eingegeben, überschreibt das Makro C6 mit dem neuen Ergebnis.
Wichtig beim Speichern: Die Datei muss als .xlsm (Excel-Arbeitsmappe mit Makros) gespeichert werden, sonst geht der Code verloren.
 
  • Gefällt mir
Reaktionen: nutrix und brody67
Eye, ihr seid absolut spitze! 👍

Habe jetzt den Code von Azeron ausprobiert - funktioniert super!

Der Code von japanology scheint noch etwas kompakter zu sein ... probiere ich auch noch.

Lieben Dank!
 
  • Gefällt mir
Reaktionen: herrStreusalz und Azeron
Zurück
Oben