Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mittelwert und Steigung in VBA berechnen

Forumthread: Mittelwert und Steigung in VBA berechnen

Mittelwert und Steigung in VBA berechnen
Michael
Hallo,
ich bin ein wenig steckengeblieben in meinem VBA Code. Ich habe eine Liste mit Messungen und dem dazugehörigen Datum (Dies ist nur ein kleiner Auschnitt):
https://www.herber.de/bbs/user/80037.xlsx
Was ich nun brauche ist die Bestimmung des Mittelwertes und der Steigung in Excel VBA für das Jahr 2000, 2001, usw.
Jahr Mittelwert Steigung
2000
2001
2002
...
Da meine Tabelle ewig lang ist wäre eine VBA Lösung einfacher wenn es auch ohne VBA geht würde mcih das auch freuen :)
Danke für die Hilfe.
VG
Michael
Anzeige
AW: Mittelwert und Steigung in VBA berechnen
04.05.2012 13:07:16
Rudi
Hallo,
Mittelwert aller Messungen eines Jahres?
Steigung wovon? Für die Berechnung einer Steigung braucht man doch X- und Y-Werte.
Gruß
Rudi
AW: Mittelwert und Steigung in VBA berechnen
04.05.2012 13:12:28
Michael
Hallo Rudi,
also ich brauche den Mittelwert für das Jahr 2000, dann für das Jahr 2001 usw. Bei der Steigung die Die X-Werte für z.B. das Jahr 2000 (x-Werte) und die Messung 1 (y-Werte). Dafür gibt es die Funktion Steigung in Excel will es aber lieber in VBA.
Dabei brauche ich eine Wenn Bedinung damit er weiss er nimmt nur z.B. das Jahr 2000 und dafür berechnet er alles und dann 2001 usw usw.
VG
Michael
Anzeige
ich sehe keine X-Werte. owT
04.05.2012 13:17:37
Rudi
AW: ich sehe keine X-Werte. owT
04.05.2012 13:19:46
Michael
Also Wenn du das Excel File öffnest dann siehst du Date, Measurement 1 usw
X wäre in dem Fall Date und Measurement 1 y. Hoffe es ist nun klarer?
AW: ich sehe keine X-Werte. owT
04.05.2012 14:16:05
Rudi
Hallo,
Function Steigung2(intYear As Integer, rngX As Range, rngY As Range)
Dim rngC As Range, objX As Object, objY As Object
Dim arrX, arrY
Set objX = CreateObject("Scripting.Dictionary")
Set objY = CreateObject("Scripting.Dictionary")
For Each rngC In rngX
If Year(rngC) = intYear Then
objX(rngC.Row) = rngC * 1
objY(rngC.Row) = rngY(rngC.Row - rngY.Row + 1) * 1
End If
Next
arrX = objX.items
arrY = objY.items
Steigung2 = WorksheetFunction.Slope(arrY, arrX)
End Function

Function Mittelwert2(intYear As Integer, rngX As Range, rngY As Range)
Dim rngC As Range, dblSum As Double, n As Long
For Each rngC In rngX
If Year(rngC) = intYear Then
n = n + 1
dblSum = dblSum + rngY(rngC.Row - rngY.Row + 1)
End If
Next
Mittelwert2 = dblSum / n
End Function

Sub aaa()
MsgBox Steigung2(2000, [A8:A42], [B8:B42])
End Sub

Sub bbb()
MsgBox Mittelwert2(2000, [A8:A42], [B8:B42])
End Sub

Gruß
Rudi
Anzeige
AW: ich sehe keine X-Werte. owT
04.05.2012 14:59:56
Michael
Hallo Rudi,
super Danke :)! Genau sowas habe ich gesucht :)!!!!!!!!
VG
Michael
AW: ich sehe keine X-Werte. owT
07.05.2012 10:49:38
Michael
Hallo Rudi,
ich muss dich nochmals um etwas bitten und zwar muss ich noch die Stdandard Abweichung bestimmen und würde es gerne genauso machen wie deine beiden Beispiele bei der Steigung und Mittelwert nur bekomme ich das nciht wirklich hin :(.
Danke.
VG
Michael
Anzeige
AW: ich sehe keine X-Werte. owT
07.05.2012 11:05:44
Michael
Noch ein Nachtrag die Anzahl möchte ich auch noch bestimmen. Danke...
AW: ich sehe keine X-Werte. owT
07.05.2012 11:36:25
Michael
Sorry habe es nun gelöst! Danke nochmals.
AW: ich sehe keine X-Werte. owT
04.05.2012 14:17:32
AndreasG
und welche Steigung solls dann sein?
die zwischen dem 1. und 2. Datum; 2. und 3. ..... ersten und letzten?
Für measurment 1 sind die z.B. JEDEN Tag unterschiedlich
Anzeige
AW: ich sehe keine X-Werte. owT
04.05.2012 15:02:27
Michael
Für die Steigung nimmt man alle Täglichen Werte z.b. vom jahr 2000 und die dazugehörigen messungen. damit kann man dann den slope von 200 bestimmen.
Rudi hat es super gelöst :)!!!!
Anzeige
Anzeige

Infobox / Tutorial

Mittelwert und Steigung in Excel VBA berechnen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten: Stelle sicher, dass deine Daten in Excel richtig formatiert sind. Du benötigst eine Spalte mit Datumsangaben und eine mit den dazugehörigen Messwerten.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul einfügen: Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  4. Code für Mittelwert und Steigung eingeben: Füge den folgenden VBA-Code ein, um den Mittelwert und die Steigung zu berechnen:

Function Steigung2(intYear As Integer, rngX As Range, rngY As Range)
    Dim rngC As Range, objX As Object, objY As Object
    Dim arrX, arrY
    Set objX = CreateObject("Scripting.Dictionary")
    Set objY = CreateObject("Scripting.Dictionary")
    For Each rngC In rngX
        If Year(rngC) = intYear Then
            objX(rngC.Row) = rngC * 1
            objY(rngC.Row) = rngY(rngC.Row - rngY.Row + 1) * 1
        End If
    Next
    arrX = objX.items
    arrY = objY.items
    Steigung2 = WorksheetFunction.Slope(arrY, arrX)
End Function

Function Mittelwert2(intYear As Integer, rngX As Range, rngY As Range)
    Dim rngC As Range, dblSum As Double, n As Long
    For Each rngC In rngX
        If Year(rngC) = intYear Then
            n = n + 1
            dblSum = dblSum + rngY(rngC.Row - rngY.Row + 1)
        End If
    Next
    Mittelwert2 = dblSum / n
End Function
  1. Subroutinen erstellen: Füge diese Subroutinen hinzu, um die Funktionen aufzurufen:
Sub BerechneSteigung()
    MsgBox Steigung2(2000, [A8:A42], [B8:B42])
End Sub

Sub BerechneMittelwert()
    MsgBox Mittelwert2(2000, [A8:A42], [B8:B42])
End Sub
  1. Funktionen testen: Führe die Subroutinen aus, um die Steigung und den Mittelwert für das Jahr 2000 zu berechnen. Du kannst die Jahre entsprechend ändern.

Häufige Fehler und Lösungen

  • Fehler bei der Datumsformatierung: Stelle sicher, dass die Datumsangaben im richtigen Format vorliegen. Excel sollte die Daten als Datum erkennen, sonst funktionieren die Berechnungen nicht.

  • Falsche Zellreferenzen: Überprüfe die Zellreferenzen in deinen Funktionen. Sie müssen die richtigen Bereiche für die Datums- und Messwertspalten angeben.

  • Keine Werte für das angegebene Jahr: Wenn du einen Jahr eingibst, für das keine Daten vorhanden sind, erhältst du einen Fehler. Stelle sicher, dass Daten für das angegebene Jahr vorhanden sind.


Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die integrierten Excel-Funktionen nutzen:

  • Mittelwert: Verwende die Funktion =MITTELWERTWENN(Bereich; Kriterium; [Mittelwertbereich]), um den Mittelwert für bestimmte Jahre zu berechnen.

  • Steigung: Die Funktion =STEIGUNG(y-Werte; x-Werte) kann direkt in einer Zelle verwendet werden, um die Steigung in Excel zu berechnen.


Praktische Beispiele

  • Mittelwert für das Jahr 2001: Um den Mittelwert für das Jahr 2001 zu berechnen, ändere einfach den Parameter in der Funktion Mittelwert2(2001, [A8:A42], [B8:B42]).

  • Steigung berechnen: Um die Steigung für das Jahr 2001 zu berechnen, rufe die Funktion Steigung2(2001, [A8:A42], [B8:B42]) auf.


Tipps für Profis

  • Verwende die Scripting.Dictionary-Objekte, um die Leistung zu verbessern, wenn du mit großen Datenmengen arbeitest.

  • Du kannst die Funktionen erweitern, um zusätzliche Statistiken wie Standardabweichung und Anzahl der Werte zu berechnen, indem du ähnliche Logik wie bei den bestehenden Funktionen verwendest.


FAQ: Häufige Fragen

1. Wie kann ich den Mittelwert für mehrere Jahre berechnen?
Du kannst die Funktion Mittelwert2 in einer Schleife aufrufen, um die Ergebnisse für mehrere Jahre zu berechnen.

2. Was sind die X- und Y-Werte für die Steigung?
Die X-Werte sind die Datumsangaben, während die Y-Werte die Messungen darstellen. Dies ist wichtig für die Berechnung der Steigung in Excel.

3. Kann ich diese Funktionen auch in anderen Excel-Versionen verwenden?
Ja, die VBA-Funktionen sind in den meisten Excel-Versionen, einschließlich Excel 2010 und neuer, anwendbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige