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

Forumthread: Mittelwert über VBA bilden

Mittelwert über VBA bilden
Helmut
Hallo Excel-Profis,
kann mir jemand von Euch helfen, mittels VBA den Mittelwert zu einer Spalte zu bilden?
Das Problem liegt darin, dass oberhalb der Zelle, in der der Mittelwert stehen soll, manchmal 3, manchmal 5, manchmal 2, oder eine andere unbekannte Anzahl Zahlen stehen. Oberhalb der Zahlen, die berücksichtigt werden sollen, befindet sich immer eine Leerzeile.
Ich wäre Euch sehr dankbar, wenn Ihr mir eine Lösung über VBA zeigen könntet (die Funktion Teilergebnisse über das Menü Daten ist für mein Fall absolut nicht geeignet).
Vielen Dank im voraus und Gruß Helmut
Anzeige

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

Betreff
Benutzer
Anzeige
MITTELWERT per VBA berechnen
05.07.2010 18:27:06
NoNet
Hallo Helmut,
hier ein Code-Beispiel für Werte der Spalte A :
Sub MittelwertPerVBA()
Dim lngEZ As Long, lngLZ As Long
Dim dblMittelwert As Double
lngEZ = Cells(1, 1).End(xlDown).Row + 2 'Leerzelle finden
lngLZ = Cells(Rows.Count, 1).End(xlUp).Row
dblMittelwert = Application.Average(Range(Cells(lngEZ, 1), Cells(lngLZ, 1)))
MsgBox "Mittelwert der Zahle aus A" & lngEZ & ":A" & lngLZ & _
":" & vbLf & dblMittelwert
End Sub
Gruß, NoNet
PS: Deutschland spielt "Vier gewinnt" :
gegen 4:0    gegen 4:1    gegen 4:0    gegen ?:?
;-)
Anzeige
AW: MITTELWERT per VBA berechnen
05.07.2010 20:13:10
Helmut
Hallo NoNet,
zuerst mal vielen Dank für Deine Unterstützung.
Allerdings habe ich mir die Lösung ein bisschen anders vorgestellt, warscheinlich habe ich mich unklar ausgedrückt.
Ich habe mal ein Beispiel angehängt. Inzwischen soll auch noch die Summe in einer weiteren Spalte gebildet werden.
https://www.herber.de/bbs/user/70439.xls
Vielen Dank nochmal für die Unterstützung.
Gruß Helmut
Anzeige
MITTELWERT() blockweise einfügen
05.07.2010 20:49:52
NoNet
Hallo Helmut,
das hatte ich anders verstanden, nicht dass die Funktionen mehrfach blockweise eingefügt werden sollen.
Das folgende Makro sollte das lösen (bitte lngEZ=5 beachten und ggf. anpassen !) :
Sub MittelwerteInLeerzellen()
Dim rngZelle As Range
Dim lngEZ As Long, lngLZ As Long
lngLZ = Cells(Rows.Count, 3).End(xlUp).Row  'Letzte Zeile der Spalte C ermitteln
lngEZ = 5 'Zeile mit der ersten auszuwertenden Zahl
For Each rngZelle In _
Union(Range("C5:C" & lngLZ).SpecialCells(xlCellTypeBlanks), Cells(lngLZ + 1, 3))
'MITTELWERT()-Funktion :
Cells(rngZelle.Row, 3).FormulaR1C1 = _
"=AVERAGE(R" & lngEZ & "C:R" & rngZelle.Row - 1 & "C)"
'SUMME()-Funktion :
Cells(rngZelle.Row, 4).FormulaR1C1 = _
"=SUM(R" & lngEZ & "C:R" & rngZelle.Row - 1 & "C)"
'Beginn des nächsten Zahlenblocks auf nächste Zeile setzen :
lngEZ = rngZelle.Row + 1
Next
'Speicher für Objektvariable wieder freigeben :
Set rngZelle = Nothing
End Sub
Gruß, NoNet
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mittelwert mit VBA berechnen


Schritt-für-Schritt-Anleitung

Um den Mittelwert einer Spalte in Excel mit VBA zu berechnen, kannst du die folgenden Schritte befolgen:

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub MittelwertPerVBA()
       Dim lngEZ As Long, lngLZ As Long
       Dim dblMittelwert As Double
       lngEZ = Cells(1, 1).End(xlDown).Row + 2 'Leerzelle finden
       lngLZ = Cells(Rows.Count, 1).End(xlUp).Row
       dblMittelwert = Application.Average(Range(Cells(lngEZ, 1), Cells(lngLZ, 1)))
       MsgBox "Mittelwert der Zahlen aus A" & lngEZ & ":A" & lngLZ & ": " & vbLf & dblMittelwert
    End Sub
  4. Starte das Makro: Klicke auf F5 oder gehe zurück in Excel und führe das Makro über das Menü aus.

Dieser Code findet die erste und letzte Zeile der Daten, die du in den Mittelwert einbeziehen möchtest, und berechnet dann den Mittelwert.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung"

    • Lösung: Stelle sicher, dass die Zellen in der ausgewählten Range tatsächlich Zahlen enthalten. Leere Zellen oder Text können diesen Fehler verursachen.
  • Fehler: "Bereich nicht gefunden"

    • Lösung: Überprüfe, ob die Leerzeile korrekt erkannt wird. Der Code sucht nach der ersten leeren Zelle, um den Startpunkt zu bestimmen. Achte darauf, dass die Daten korrekt formatiert sind.

Alternative Methoden

Falls du nicht mit VBA arbeiten möchtest, kannst du den Mittelwert auch direkt in Excel berechnen:

  1. Benutze die Funktion =MITTELWERT() in einer Zelle, um den Mittelwert einer bestimmten Range zu berechnen.
  2. Beispielsweise: =MITTELWERT(A1:A10).

Diese Methode ist einfach, wenn du keine dynamischen Änderungen an der Range brauchst.


Praktische Beispiele

Hier ein weiteres Beispiel, um den Mittelwert blockweise in Leerzellen einzufügen:

Sub MittelwerteInLeerzellen()
    Dim rngZelle As Range
    Dim lngEZ As Long, lngLZ As Long
    lngLZ = Cells(Rows.Count, 3).End(xlUp).Row  'Letzte Zeile der Spalte C ermitteln
    lngEZ = 5 'Zeile mit der ersten auszuwertenden Zahl
    For Each rngZelle In _
        Union(Range("C5:C" & lngLZ).SpecialCells(xlCellTypeBlanks), Cells(lngLZ + 1, 3))
        'MITTELWERT()-Funktion :
        Cells(rngZelle.Row, 3).FormulaR1C1 = _
        "=AVERAGE(R" & lngEZ & "C:R" & rngZelle.Row - 1 & "C)"
        'SUMME()-Funktion :
        Cells(rngZelle.Row, 4).FormulaR1C1 = _
        "=SUM(R" & lngEZ & "C:R" & rngZelle.Row - 1 & "C)"
        'Beginn des nächsten Zahlenblocks auf nächste Zeile setzen :
        lngEZ = rngZelle.Row + 1
    Next
    'Speicher für Objektvariable wieder freigeben :
    Set rngZelle = Nothing
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlungen in deinem VBA-Code, um potenzielle Probleme abzufangen. Ein einfaches On Error Resume Next kann helfen.
  • Dokumentiere deinen Code mit Kommentarzeilen, um ihn für dich und andere verständlicher zu machen.
  • Experimentiere mit der Funktion Application.Average und kombiniere sie mit If-Abfragen, um gezielt Werte zu filtern.

FAQ: Häufige Fragen

1. Wie kann ich den Mittelwert für mehrere Spalten gleichzeitig berechnen?
Du kannst die Range-Anweisung anpassen, um mehrere Spalten auszuwählen, z. B. Range("A1:C10").

2. Was passiert, wenn ich leere Zellen in meiner Range habe?
Die Application.Average-Funktion ignoriert leere Zellen automatisch, aber es ist wichtig, sicherzustellen, dass keine nicht-numerischen Werte in der Range vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige