Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1032to1036
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gleitende Durchschnitte

Gleitende Durchschnitte
16.12.2008 13:23:00
Julia
Hallo liebes Forum,
Ich habe folgende Frage:
Anbei ist eine Excel-Datei, in welcher verschiedene historische Daten zusammengefasst sind.
https://www.herber.de/bbs/user/57665.xls
Mein Ziel ist es, per Makro gleitende Durchschitte der letzten 12 Monate gewichtet mit dem Total-Value (Spalte J) zu berechnen. (In der Datei sind bereits die Durchschnitte per Formel berechnet, aber ich möchte, dass es automatisch mit dem Makro passiert).
Irgendwie komme ich leider nicht weiter.
Könnte mir jemand vielleicht auf die Sprünge helfen?
Vielen Dank!
Julia

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gleitende Durchschnitte
17.12.2008 19:41:00
Erich
Hallo Julia,
ganz klar ist mir die Aufgabenstellung nicht. Soll das Makro die Formeln für den Durchschnitt
in die Spalten C, E, G und I schreiben?
Wie wird der gleitende Durchschnitt berechnet, wenn (wie in den Spalten F und H) Werte fehlen?
Darauf habe ich im Code unten keine Rücksicht genommen.
In der Tabelle gibt es einen Namen "Datum", der auf ein Blatt "Daten" verweist (für die Gültigkeit in B3).
Datum ist aber auch eine Excelfunktion. Verwende besser einen anderen Namen.
Auch die Bezeichnungen Name, Zeile und Path solltest du nicht als Variablennamen verwenden.
Im folgenden Code habe ich die umbenannt.
Alle Selects (außer einem vermutlich auch überflüssigen am Ende) habe ich entfernt.
Statt wksZiel kannst du auch mit Me arbeiten - der Code steht im Modul der Zieltabelle.
Bitte schau dir auch mal die Deklarationen an, da habe ich etwas ergänzt.
Hier mein Vorschlag. Tut er das, was du möchtest?

Option Explicit
Private Sub DatenEinfügen_Click()
Dim tempFile As String, strName As String, datDatum As Date
Dim lngZeile As Long, Verz As String
Dim tempWb As Workbook
Const strPath As String = "I:\Analysen\Aktiva\"
strName = Range("B1")
datDatum = Range("B3")
lngZeile = 9
'Suche wiederholen, solange Datum  ""
Set tempWb = Workbooks.Open(Verz & "\" & tempFile)
With tempWb.Sheets("Balance")
If Range("A8") = "" Then Me.Range("A8") = .Range("A2")
Me.Cells(lngZeile, 1) = .Range("D1")
Me.Cells(lngZeile, 2) = .Range("B49")
Me.Cells(lngZeile, 4) = .Range("D49")
Me.Cells(lngZeile, 6) = .Range("B51")
Me.Cells(lngZeile, 8) = .Range("D52")
Me.Cells(lngZeile, 10) = .Range("B60")
End With
tempWb.Close False
lngZeile = lngZeile + 1
' Nächste Datei im Verzeichnis aufrufen
datDatum = DateAdd("m", 1, datDatum + 1) - 1
Verz = strPath & strName & "\" & Format(datDatum, "YYYY") & "\" & _
Format(datDatum, "YYMM") & "\" & "mail"
tempFile = Dir(Verz & "\" & "*ZirisReports*.xls")
Loop
End If
Loop
lngZeile = lngZeile - 1
Range("B9:J" & lngZeile).NumberFormat = "#,##0.00"
If lngZeile >= 20 Then
With Range(Cells(20, 3), Cells(lngZeile, 3))
.FormulaLocal = "=SUMMENPRODUKT(B9:B20;$J9:$J20)/$K20"
.Copy Cells(20, 5)
.Copy Cells(20, 7)
.Copy Cells(20, 9)
End With
End If
Range("B9").Select                     ' nur, wenn hier der Cursor stehen soll
Application.ScreenUpdating = False
Application.Calculation = xlCalculationAutomatic
Set tempWb = Nothing
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Gleitende Durchschnitte
18.12.2008 10:14:00
Julia
Vielen Dank, Erich!
Funktioniert super und ist auch schneller!
Danke für die wertvollen Tipps.
Die Formel funktioniert auch richtig.
Allerdings fehlt noch in Spalte K die Summe jeweils für die letzten 12 Monate, auf die sich die Formel bezieht...
Vielen Dank!
LG,
Julia
AW: Gleitende Durchschnitte
18.12.2008 12:06:00
Erich
Hi Julia,
danke für deine Rückmeldung!
Für die Formel brauchst du nur eine Zeile zu ergänzen.
Die Zeile davor und die Zeile danach stehen hier auch:

If lngZeile >= 20 Then
Range(Cells(20, 11), Cells(lngZeile, 11)).FormulaLocal = "=SUMME(J9:J20)"
With Range(Cells(20, 3), Cells(lngZeile, 3))

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige