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

Werte historisieren (chronologisch)

Forumthread: Werte historisieren (chronologisch)

Werte historisieren (chronologisch)
16.11.2017 14:20:42
Bernd
Hallo zusammen,
ich würde gerne verschiedene Werte aus einer Quelltabelle (verschiedene Felder) in einer Liste ("Auswertung") chronologisch fortschreiben. Dies sol per Schaltfläche manuell gestartet werden. Sollten sich nochmals Änderungen an den Quelldaten ergeben, dann sollte ein Überschreibvorgang stattfinden, wobei das Datumsfeld das relevante Kriterium ist. im Jahresverlauf sollte sich dann eine Tabelle ergeben, in der die Wochendaten zeilenweise dargestellt sind. Anbei eine Mustervorlage, wie das so aussehen soll. Noch folgende Ergänzung: In der Auswertungstabelle sollten die Spalten d,f,h und ab j nicht durch das Makro überschrieben werden, da ich dort gerne Formeln einbauen würde.
VG
Bernd
PS: Die Musterdatei :
https://www.herber.de/bbs/user/117709.xlsx
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Werte historisieren (chronologisch)
16.11.2017 15:51:29
fcs
Hallo Bernd,
nachfolgend ein entsprechendes Makros.
Im Blatt Auswertung muss du vor Makroausführung die Formel in B2 durch den Wert ersetzen.
Gruß
Franz
Sub WochenAuswertung_aktualisieren()
Dim wksQ As Worksheet
Dim wksA As Worksheet
Dim datDatum As Date
Dim Zeile_A As Long
Set wksQ = ActiveWorkbook.Worksheets("Quelle")
Set wksA = ActiveWorkbook.Worksheets("Auswertung")
datDatum = wksQ.Range("C4").Value
With wksA
Zeile_A = .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(Zeile_A, 2).Value = datDatum Then
If MsgBox("vorhandene Daten in Auswertung überschreiben?", _
vbQuestion + vbOKCancel, "Wochenauswertung") = vbCancel Then Exit Sub
Else
If MsgBox("Daten für neue Woche in Auswertung schreiben?", _
vbQuestion + vbOKCancel, "Wochenauswertung") = vbCancel Then Exit Sub
Zeile_A = Zeile_A + 1
.Cells(Zeile_A, 2) = datDatum
End If
.Cells(Zeile_A, 3).Value = wksQ.Range("D4").Value 'Wert 1
.Cells(Zeile_A, 5).Value = wksQ.Range("F11").Value 'Wert 2
.Cells(Zeile_A, 7).Value = wksQ.Range("H4").Value 'Wert 3
.Cells(Zeile_A, 9).Value = wksQ.Range("I7").Value 'Wert 4
'usw
End With
End Sub

Anzeige
AW: Werte historisieren (chronologisch)
17.11.2017 08:33:56
Bernd
Hallo Franz!
Perfekt gelöst wie immer!
Vielen Dank!
Gruß,
Bernd
AW: Werte historisieren (chronologisch)
17.11.2017 14:08:14
Bernd
Hallo nochmals,
doch noch eine kleiner Frage: Wie kann man z. B. die Werte aus D4 und F11 über den VBA-Code addieren und die Summe in die gewünschte Zelle in der Auswertung "reinschreiben"?
Viele Grüße
Bernd
Anzeige
AW: Werte historisieren (chronologisch)
18.11.2017 19:47:21
fcs
Hallo Bernd,
Wie kann man z. B. die Werte aus D4 und F11 über den VBA-Code addieren ...?
Übersraschender Weise kann VBA auch addieren.

.Cells(Zeile_A, 10).Value = wksQ.Range("D4").Value + wksQ.Range("F11").Value
Wenn nicht sichergestellt ist, dass in den Zellen eine Zahl steht oder die Zellen leer sind, dann muss der Zellinhalt geprüft werden, ob er nummerisch ist bevor addiert wird.

With .Cells(Zeile_A, 10)
.Value = 0
If IsNumeric(wksQ.Range("D4")) Then
.Value = .Value + wksQ.Range("D4").Value
End If
If IsNumeric(wksQ.Range("F11")) Then
.Value = .Value + wksQ.Range("F11").Value
End If
End With

Gruß
Franz
Anzeige
AW: Werte historisieren (chronologisch)
20.11.2017 13:15:47
Bernd
Danke nochmals Franz!
;
Anzeige

Infobox / Tutorial

Werte historisieren in Excel: Chronologisch und Effizient


Schritt-für-Schritt-Anleitung

Um Werte in Excel chronologisch zu historisieren, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub WochenAuswertung_aktualisieren()
       Dim wksQ As Worksheet
       Dim wksA As Worksheet
       Dim datDatum As Date
       Dim Zeile_A As Long
    
       Set wksQ = ActiveWorkbook.Worksheets("Quelle")
       Set wksA = ActiveWorkbook.Worksheets("Auswertung")
       datDatum = wksQ.Range("C4").Value
    
       With wksA
           Zeile_A = .Cells(.Rows.Count, 2).End(xlUp).Row
           If .Cells(Zeile_A, 2).Value = datDatum Then
               If MsgBox("vorhandene Daten in Auswertung überschreiben?", _
               vbQuestion + vbOKCancel, "Wochenauswertung") = vbCancel Then Exit Sub
           Else
               If MsgBox("Daten für neue Woche in Auswertung schreiben?", _
               vbQuestion + vbOKCancel, "Wochenauswertung") = vbCancel Then Exit Sub
               Zeile_A = Zeile_A + 1
               .Cells(Zeile_A, 2) = datDatum
           End If
           .Cells(Zeile_A, 3).Value = wksQ.Range("D4").Value 'Wert 1
           .Cells(Zeile_A, 5).Value = wksQ.Range("F11").Value 'Wert 2
           .Cells(Zeile_A, 7).Value = wksQ.Range("H4").Value 'Wert 3
           .Cells(Zeile_A, 9).Value = wksQ.Range("I7").Value 'Wert 4
       End With
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle das Makro WochenAuswertung_aktualisieren und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: Makro läuft nicht
    Stelle sicher, dass die Arbeitsblätter "Quelle" und "Auswertung" existieren. Überprüfe auch die Schreibweise.

  • Fehler: Ungültige Datumsangabe
    Überprüfe, ob das Datum in Zelle C4 im richtigen Format eingegeben wurde.

  • Fehler: Zellen werden überschrieben
    Achte darauf, dass die Spalten D, F, H und J nicht mit dem Makro überschrieben werden. Diese Spalten sollten Formeln enthalten.


Alternative Methoden

Neben VBA kannst du auch Power Query nutzen, um eine Chronologie in Excel zu erstellen. Mit Power Query kannst du historische Daten leicht importieren und transformieren, um sie in der gewünschten Form darzustellen.

  1. Öffne die Datenquelle in Excel.
  2. Gehe zu Daten > Daten abrufen und wähle die Quelle aus.
  3. Transformiere die Daten im Power Query Editor und lade sie zurück nach Excel.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du Werte historisieren kannst:

  1. Daten in der "Quelle":

    • D4: 100
    • F11: 200
  2. Wende das Makro an. Die Auswertung wird wie folgt aussehen:

    Datum Wert 1 Wert 2 Summe
    01.01.2023 100 200 300
  3. Summe hinzufügen: Um die Summe in die gewünschte Zelle (z.B. Spalte K) zu schreiben, kannst du den Code anpassen:

    .Cells(Zeile_A, 10).Value = wksQ.Range("D4").Value + wksQ.Range("F11").Value

Tipps für Profis

  • Verwende Formeln intelligent: Du kannst Formeln in den Spalten verwenden, die nicht überschrieben werden, um automatische Berechnungen durchzuführen.
  • Automatisiere den Prozess: Setze das Makro an einen Button in Excel, um es für andere Benutzer einfacher zu machen.
  • Datenvalidierung: Nutze Datenvalidierungsregeln, um Eingabefehler in den Quelldaten zu vermeiden, bevor die Werte historisiert werden.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen?
Du kannst die Zeilen im VBA-Code anpassen, um andere Zellen zu lesen oder zusätzliche Berechnungen hinzuzufügen.

2. Funktioniert das auch in älteren Excel-Versionen?
Das vorgestellte Makro sollte in Excel 2010 und neueren Versionen funktionieren. Überprüfe die Excel-Version, falls du auf Probleme stößt.

3. Kann ich das Makro auch automatisieren?
Ja, du kannst das Makro automatisieren, indem du es an ein Event wie das Öffnen der Datei oder das Ändern von Daten bindest.

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