Office: Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

Helfe beim Thema Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo ich habe folgendes Problem: Wenn sich in einer Zelle (E7) der Wert ändert, dann soll in der Zelle (G7) kumulativ die Änderung (+1) gezählt... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von chrisi82, 16. August 2013.

  1. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen


    Hallo ich habe folgendes Problem:

    Wenn sich in einer Zelle (E7) der Wert ändert, dann soll in der Zelle (G7) kumulativ die Änderung (+1) gezählt werden.
    Das soll dann auch für alle anderen einzelnen Zelle (E8 bis E71) funktionieren, die Anderungen dann in (G8 bis G71).

    Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen 001.jpg

    Kann mir da jemand weiterhelfen ?? Ich hab da nicht so richtig Plan

    Danke !!!
     
    chrisi82, 16. August 2013
    #1
  2. schatzi Super-Moderator
    Hallo!

    Werden die Werte in Spalte E manuell eingetragen, oder steckt da eine Formel dahinter? Wenn ja, welche?
     
    schatzi, 16. August 2013
    #2
  3. Die werden von Hand eingetragen
     
    chrisi82, 16. August 2013
    #3
  4. schatzi Super-Moderator

    Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

    Hallo!

    Mach einen Rechtsklick auf den Tabellenreiter des Blatts, wähle "Code anzeigen" und kopiere diesen Code ins Codefenster:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E8:E71")) Is Nothing And Target.Count = 1 Then _
    Target.Offset(0, 2) = Target.Offset(0, 2) + 1
    End Sub
     
    schatzi, 16. August 2013
    #4
  5. Danke funktioniert.

    Was müsste geändert werden, wenn die Zahl per Formel eingetragen wird ??

    =C7/60
     
    Zuletzt bearbeitet: 16. August 2013
    chrisi82, 16. August 2013
    #5
  6. Hat dafür jemand vielleicht eine Lösung ???
     
    chrisi82, 17. August 2013
    #6
  7. Exl121150 Erfahrener User
    Hallo,
    so einfach ist das nicht, denn das Worksheet_Change-Ereignis tritt nur ein, wenn der User eine Zelle durch Eingabe eines Wertes ändert.
    Ändert sich der Zellwert nur deshalb, weil eine Zellformel ein anderes Ergebnis geliefert hat, tritt statt dessen das Worksheet_Calculate-Ereignis ein - nachdem die Änderung in der Zelle passiert ist. Da dieses Ereignis keinen Target-Parameter hat, weiß man nur, dass eine Neuberechnung des Arbeitsblattes stattgefunden hat - aber wo, das ist die große Preisfrage.
    Um diese Preisfrage zu lösen, muss man sich zuerst einen Hilfsbereich reservieren, der die Zellwerte des Bereiches E8:E71 enthält, bevor eine solche Blattneuberechnung erfolgte. Im untenstehenden Makro habe ich dafür den Bereich "Z8:Z71" hergenommen. Falls dies bei Dir ein anderer Bereich sein muss/soll, müsstest Du die entsprechend (rot) gekennzeichnete Stelle im Makro ändern, aber nur die beiden Z durch einen neuen Spaltenbuchstaben (nicht jedoch die Zeilennummern!!)
    Code:
    
    Private Sub Worksheet_Calculate()
      'Dieses Ereignis tritt ein, nachdem das Arbeitsblatt neu berechnet wurde
      Dim rngIstNeuberechnet As Range
      Dim rngVergleichswerte As Range
      Dim rngZelle As Range, SpalteZ_Diff As Long
      '
      'Bereich der Zellen, die überprüft werden sollen, ob sich durch Berechnungen ihr Wert geändert hat:
      '(Im Bereich G8:G71 sind die Zähler enthalten, die mitzählen, wie oft eine solche Zelländerung erfolgte)
      Set rngIstNeuberechnet = Range("E8:E71")
      '
      'Bereich der Zellen, die die Werte aus E8:E71 bis vor der letzten Neuberechnung des Arbeitsblattes enthalten:
      Set rngVergleichswerte = Range("[COLOR=#ff0000][B]Z[/B][/COLOR]8:[COLOR=#ff0000][B]Z[/B][/COLOR]71")  '<--- eventuell anderen Bereich wählen!!
      '
      SpalteZ_Diff = rngVergleichswerte.Column - rngIstNeuberechnet.Column
      Application.EnableEvents = False
      For Each rngZelle In rngIstNeuberechnet.Cells
        With rngZelle
          If .HasFormula Then
            If .Value <> .Offset(0, SpalteZ_Diff) Then
              .Offset(0, SpalteZ_Diff) = .Value
              .Offset(0, 2) = .Offset(0, 2) + 1
            End If
          End If
        End With
      Next rngZelle
      Application.EnableEvents = True
      '
    End Sub
    '
    Private Sub Worksheet_Change(ByVal Target As Range)
      'Dieses Ereignis tritt ein, nachdem der User im Target-Bereich neue Werte eingegeben hat:
      If Intersect(Target, Range("E8:E71")) Is Nothing Then Exit Sub
      With Target
        If .Count = 1 Then
          .Offset(0, 2) = .Offset(0, 2) + 1
        End If
      End With
    End Sub
    
    
    Am besten Du markierst die obigen Makros, kopierst sie in die Zwischenablage und fügst sie anstelle des Makros von Schatzi wieder ein (Das Makro von Schatzi ist in der 2. Private-Sub enthalten). Wo das Makro von Schatzi in Deiner Excel-Datei zu finden ist, das weißt Du ja.
     
    Zuletzt bearbeitet: 18. August 2013
    Exl121150, 18. August 2013
    #7
  8. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

    Funktioniert super !!!

    Danke !!!
     
    chrisi82, 18. August 2013
    #8
  9. Moatin Neuer User
    Super Sache von Euch. Nur möchte ich wissen wie man die komultative Zählung in einer Zelle haben kann...
    zB.: Ich ändere E7 und G7 zählt . Darauf ändere ich e8 und g7 zählt. Wenn ihr mir saen könntet wie man den Code dafür ändern müsste wäre ich euch sehr dankbar. Danke auch schon im voraus. :)
     
    Moatin, 3. August 2016
    #9
  10. Exl121150 Erfahrener User
    Hallo,

    ausgehend von den Vorgaben der vorherigen Postings in diesem Thread, musst du die beiden rot gekennzeichneten Zeilen ändern, um eine (kumulative) Änderungszählung nur in Zelle G7 durchzuführen:

    Code:
    Option Explicit
    
    Private Sub Worksheet_Calculate()
      'Dieses Ereignis tritt ein, nachdem das ARBEITSBLATT neu berechnet wurde
      Dim rngIstNeuberechnet As Range
      Dim rngVergleichswerte As Range
      Dim rngZelle As Range, SpalteZ_Diff As Long
      '
      'Bereich der Zellen, die überprüft werden sollen, ob sich durch Berechnungen ihr Wert geändert hat:
      '(Im Bereich G8:G71 sind die Zähler enthalten, die mitzählen, wie oft eine solche Zelländerung erfolgte)
      Set rngIstNeuberechnet = Range("E8:E71")
      '
      'Bereich der Zellen, die die Werte aus E8:E71 bis vor der letzten Neuberechnung des Arbeitsblattes enthalten:
      Set rngVergleichswerte = Range("Z8:Z71")  '<--- eventuell anderen Bereich wählen!!
      '
      SpalteZ_Diff = rngVergleichswerte.Column - rngIstNeuberechnet.Column
      Application.EnableEvents = False
      For Each rngZelle In rngIstNeuberechnet.Cells
        With rngZelle
          If .HasFormula Then
            If .Value <> .Offset(0, SpalteZ_Diff) Then
              .Offset(0, SpalteZ_Diff) = .Value
    [COLOR="#FF0000"]          Range("G7").Value = Range("G7").Value + 1
    [/COLOR]        End If
          End If
        End With
      Next rngZelle
      Application.EnableEvents = True
      '
    End Sub
    '
    Private Sub Worksheet_Change(ByVal Target As Range)
      'Dieses Ereignis tritt ein, nachdem der User im Target-Bereich neue WERTE eingegeben hat:
      If Intersect(Target, Range("E8:E71")) Is Nothing Then Exit Sub
      With Target
        If .Count = 1 Then
    [COLOR="#FF0000"]      Range("G7").Value = Range("G7").Value + 1
    [/COLOR]    End If
      End With
    End Sub
    
     
    Exl121150, 4. August 2016
    #10
  11. starduck Neuer User
    Hallo liebe Excel Freunde,
    ich schreibe in diesem älteren Thread da er mir bei einem Problem geholfen hat. Dafür hat er ein neues Verursacht.

    Ich habe den Code von Schatzi verwendet um Änderungen in Zellen zu zählen.
    Das funktioniert auch super! Vielen Dank.

    Was nun aber den Anwendern Probleme bereitet, ist das der "Rückgängig" Button oben links nicht mehr funktioniert. Wenn diese also aus Versehen einen Eintrag löschen können Sie diesen nicht wieder herstellen. Wir verwenden Excel 2016.

    Habt ihr eine Idee wie ich Änderungen zählen kann und die Anwender gleichzeitig den Button verwenden können?

    Vielen Dank schön einmal an alle die dies mitlesen und ein noch größeres Danke für alle Lösungsideen.

    Gruß L
     
  12. Exl121150 Erfahrener User
    Hallo,

    Code:
    Option Explicit
    
    Dim rngLetzteZelle As Range               'Zelle Spalte E
    Dim varLetzterWert(1 To 2) As Variant     'Werte Spalte E Alt(=1) bzw Neu(=2)
    
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("E8:E71")) Is Nothing And Target.Count = 1 Then
         
         Set rngLetzteZelle = Target       'Merke Target-Zelle Spalte E
         varLetzterWert(2) = Target.Value  'Merke Target-NeuWert Spalte E
         On Error GoTo Err_Change
         With Application
            .EnableEvents = False
            .Undo                       '"Undo" um Target-AltWert Spalte E zu ermitteln!!
         End With
         With Target
            varLetzterWert(1) = .Value               'Merke Target-AltWert Spalte E
            .Value = varLetzterWert(2)               'Speichere Target-NeuWert Spalte E
            .Offset(0, 2).Value = .Offset(0, 2) + 1  'Speichere NeuWert Spalte G
         End With
    Err_Change:
         With Application
            .EnableEvents = True
            .OnUndo Text:="UndoInkrem", Procedure:="[COLOR="#FF0000"]Tabelle1.[/COLOR]DekremSUB"
         End With
         
       End If
    End Sub
    
    Sub DekremSUB()
      Application.EnableEvents = False
      On Error GoTo Err_dekrem
      With rngLetzteZelle
        .Value = varLetzterWert(1)                    'Speichere Target-AltWert Spalte E
        .Offset(0, 2).Value = .Offset(0, 2).Value - 1 'Speichere AltWert Spalte G
      End With
    Err_dekrem:
      Application.EnableEvents = True
    End Sub
    
    Installation:
    Vorgenannte 2 Makros sind ins Codemodul des Arbeitsblattes zu kopieren anstelle deines Makros. Die rot gekennzeichnete Stelle ist der interne Name des Codemoduls - nicht zu verwechseln mit der Tabulator-Beschriftung des Arbeitsblattes, zu dem dieses Codemodul gehört! Dieser interne Name ist im Projektexplorer des VBA-Editors ersichtlich.
    Sollte das Projekt-Explorer-Fenster im VBA-Editor nicht zu sehen sein, kann es mittels Tastenkombination Strg+R eingeblendet werden.
    Dort sind in einer hierarchischen Auflistung die wichtigsten Objekte der Excel-Mappe zu sehen, angefangen vom "VBAProjekt (…)" über die "Microsoft Excel Objekte" und schließlich "DieseArbeitsmappe", "Tabelle1 (Test)", "Tabelle2 (Tabelle2), …"
    Dabei ist der rot gekennzeichnete Eintrag exakt der im Makro an der roten Stelle benötigte Name, während der blau gekennzeichnete, in Klammern befindliche Eintrag die hier nicht benötigte Tab-Beschriftung des Arbeitsblattes ist.

    Hinweise zum Ablauf:
    1) Es werden im 1. Makro (Worksheet_Change) die benötigten Vorgängerwerte der Spalte E und G der betreffenden Zelle ermittelt, obwohl sie nicht mehr angezeigt werden im Arbeitsblatt
    2) Es wird ein Makro (DekremSUB) als Undo-Makro festgelegt, wobei dieser Aktion der Name "UndoInkrem" zugewiesen wird. Dieser Name ist dann auch in der UNDO-Liste des UNDO-Pfeils im Arbeitsblatt sichtbar.
    3) Wird der Undo-Pfeil nach Aktualisierung der Spalten E bzw. G gedrückt, werden erwartungsgemäß die Werte besagter Spalten wieder zurückgestellt auf ihre Altwerte.
    4) Die Punkte 1)+2) sind für die Anwender ohne Belang - ich habe sie hier nur zum besseren Verständnis aufgeführt, sie laufen auch vollautomatisch ab.
     
    Exl121150, 22. November 2018
    #12
  13. starduck Neuer User

    Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

    Hallo Anton Exl,
    erst einmal vielen Dank das du dich meinem Problem annimmst. Ich gestehe ich habe etwas Respekt vor der Aufgabe dies umzusetzen, habe mir aber den heutigen Vormittag dafür freigehalten. Ich habe leider nicht meine angepasste Version eingestellt und muss nun auch erfolgreich deinen Code auf meine Bereiche anpassen.

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:AN500")) Is Nothing And Target.Count = 1 Then _
    Target.Offset(0, 42) = Target.Offset(0, 42) + 1
    End Sub

    Ich Berichte von meinen Erfolgen.

    Liebe Gruß L
     
Thema:

Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen

Die Seite wird geladen...
  1. Wenn sich der Wert in einer Zelle ändert, dann soll die Änderung kumulativ anzeigen - Similar Threads - Wert Zelle ändert

  2. Zweiten Wert aus einer Zelle löschen

    in Microsoft Excel Hilfe
    Zweiten Wert aus einer Zelle löschen: Hallo zusammen, ich benötige eure Hilfe bei folgendem Problem: Ich habe eine Exceltabelle mit über 1600 Kundenkontakten. Leider wurde bei der Erstellung der Tabelle durch die...
  3. Zelle leer anzeigen, wenn Wert in der zelle nach dem Komma nicht 0 ist

    in Microsoft Excel Hilfe
    Zelle leer anzeigen, wenn Wert in der zelle nach dem Komma nicht 0 ist: Hallo zusammen, ich habe da mal wieder ne spezielle Frage. Ich habe eine Arbeitsmappe, in der ein Tabellenblatt die Information beinhaltet, wie gross eine VE ist. In dem anderen Tabellenblatt...
  4. Wenn der Wert einer Zelle in einem anderem Blatt vorhanden ist, dann ....

    in Microsoft Excel Hilfe
    Wenn der Wert einer Zelle in einem anderem Blatt vorhanden ist, dann ....: Guten Morgen zusammen, ich möchte gerne, dass wenn der Wert einer Zelle (C2) in der Tabelle1 in der Spalte A1:A20000 vorhanden ist, dass dann - entweder in der Spalte C3 der Wert "V" erscheint...
  5. Makro starten, wenn Wert einer bestimmten Zelle sich durch Formel ändert

    in Microsoft Excel Hilfe
    Makro starten, wenn Wert einer bestimmten Zelle sich durch Formel ändert: Hallo, ich habe schon eine Stunde im Netz herum gesucht und finde keine befriedigende Lösung für folgendes Problem: Es soll automatisch ein Makro gestartet werden, wenn sich der Wert einer...
  6. Zelle sperren / entsperren, wenn Wert in anderer Zelle sich ändert

    in Microsoft Excel Hilfe
    Zelle sperren / entsperren, wenn Wert in anderer Zelle sich ändert: Hallo zusammen, ich habe mal wieder ein kleines Problem. In der angehängten Tabelle soll Folgendes durch ein Makro ausgeführt werden: Zellen E4:E7 entsperren, falls C8 >= 5 wird Zellinhalt E4:E7...
  7. Wenn sich der Wert einer Zelle ändert Makro aufrufen

    in Microsoft Excel Hilfe
    Wenn sich der Wert einer Zelle ändert Makro aufrufen: Hallo Mitforisten, ich habe folgendes Problem: Ich habe ein Makro geschrieben, möchte aber, dass es nur aufgerufen wird, wenn sich der Wert in Zelle A1 z.B. ändert. Ist so etwas möglich? Gruß...
  8. Zelle inhalt/Wert ändert sich über Combobox dann eine andere Zelle leeren

    in Microsoft Excel Hilfe
    Zelle inhalt/Wert ändert sich über Combobox dann eine andere Zelle leeren: Hallo zusammen Ich habe folgendes Problem mit meinem Code. Wenn ich eine Eingabe in B3 mache wird die Zelle C5 geleert bzw. wenn ich einen eingabe in C5 mache wird B3 geleert. Das klappt...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden