So übertragen Sie den Verlauf von Datenänderungen aus einer Excel-Arbeitsmappe oder einem Excel-Blatt in eine andere Arbeitsmappe oder ein anderes Blatt

So übertragen Sie den Verlauf von Datenänderungen aus einer Excel-Arbeitsmappe oder einem Excel-Blatt in eine andere Arbeitsmappe oder ein anderes Blatt

Guten Tag,

Ich arbeite an einer Excel-Tabelle, in der ich eine Datentabelle habe. Diese Daten stellen mehrere Kennzahlen dar, die meine Abteilung im Auge behalten möchte. Immer wenn jemand die Tabelle mit neuen Daten füllen möchte, gehen die vorherigen Daten in den Zellen verloren.

Wie kann man ein separates Blatt erstellen, in dem man alle Werte dieser Tabelle automatisch speichern kann? Ich meine, wenn eine Änderung in einer der Tabellenzellen vorgenommen wird, soll der neue Wert automatisch in einer anderen Tabelle gespeichert werden, die alle Werte (alte und neue) der Zellen behält? Ich habe die „Änderungen nachverfolgen“-Funktion ausprobiert, bin mir aber nicht sicher, ob mir diese Methode so gut gefällt.

Kennt jemand einen effizienteren Weg, dies zu tun? Zum Beispiel über ein Makro?

Danke schön!

Antwort1

(Ich bin mobil und kann daher derzeit keine ausführlichere Antwort geben.)

Ich habe genau dafür Code geschrieben. Meine Absicht war, alle Änderungen auf einem kritischen Blatt zu verfolgen, das von mehreren Benutzern bearbeitet wurde. Wenn es einen Streit darüber gäbe, woher die Daten kamen, könnte ich das Protokoll überprüfen. Hier sind VBA-Teile, die sich als nützlich erweisen werden.

Worksheet_ChangeDas Ereignis wird jedes Mal ausgelöst, wenn das Arbeitsblatt geändert wird.

If Not Intersect(Target, Range("A1:G12")) Is Nothingteilt Ihnen mit, ob die geänderte(n) Zelle(n) innerhalb eines für Sie relevanten Bereichs liegen oder nicht.

Es ist schneller, die Werte, die Sie protokollieren möchten, in einem Array zu speichern und dann einen Bereich auf Ihrem Protokollblatt so festzulegen, dass er diesem Array entspricht, als jede Zelle auf dem Protokollblatt einzeln festzulegen.

Versuchen Sie es und sehen Sie, wie weit Sie kommen. Morgen kann ich etwas ausführlicher sein.


Nächster Tag bearbeiten

Hier ist ein Code, der den Bereich auf dem Blatt überwacht, das A1:G12den Code enthält. Wenn rdie Zeile geändert wurde, kopiert der Code alles Ar:Grin ein Blatt, dessenCode Nameist shtLog. (Der Codename ist der in VBA angezeigte Name, nicht der Name auf der Registerkarte, den Sie in Excel sehen.) Dies sollte Sie in die richtige Richtung bringen.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Integer
    Dim c As Integer
    Dim arr(1 To 1, 1 To 12)
    If Not Intersect(Target, Range("A1:G12")) Is Nothing Then
        r = Target.Row
        For c = 1 To 12
            arr(1, c) = Cells(r, c).Value
        Next
        With shtLog
            .Range(.Cells(.UsedRange.Rows.Count + 1, 1), .Cells(.UsedRange.Rows.Count + 1, 12)) = arr
        End With
    End If
End Sub

Antwort2

Die integrierte Funktion „Änderungen nachverfolgen“ ist wahrscheinlich weitaus robuster als jede Änderungsverfolgung, die Sie mit Makros zu implementieren versuchen. Bleiben Sie dabei.

Antwort3

Wir (Haftungsausschluss, ich bin der Gründer) haben ein Prüfpfadsystem für Excel entwickelt (ähnlich wie Google Docs, aber für Excel). Es ist keine freigegebene Arbeitsmappe erforderlich und der Prüfpfad wird in einer lokalen SQL-Datenbank gespeichert, sodass er von jeder Arbeitsmappe aus aufgerufen und als separates Blatt gespeichert werden kann. Schauen Sie sich das an:http://www.officeautomata.com

Antwort4

Mit der Anhängen-Funktion von Sheetgo können Sie einen Verlauf aller Variablenänderungen in Excel speichern. Weitere Informationen finden Sie in diesem Blogbeitrag:https://blog.sheetgo.com/wie-man-mit-sheetgo-Probleme-löst/Änderungen-in-Excel-Dateien-nachverfolgen/(*Haftungsausschluss: Ich bin Mitbegründer von Sheetgo).

verwandte Informationen