Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mittelwert aus mehreren Spalten bilden

Mittelwert aus mehreren Spalten bilden
18.06.2007 13:18:25
Tobias
Hallo zusammen,
bräuchte nochmal Hilfe beim bilden mehrerer Mittelwerte.
Ich möchte den Mittelwert von Zelle A1 bis Zelle A10 bilden, anschließend von A11 bis A20 usw. (immer aus 10 aufeinanderfolgenden Werten). Dies soll solange gemacht werden bis der letzte Wert der Spalte A erreicht ist. In Spalte B soll er mir die Ergebnisse ausgeben B1,B2 usw.
Möchte das ganze mit VBA lösen, kenn mich aber nicht gerade gut aus!
Vielleicht könnt ihr mir da nochmal helfen.
Gruß
Tobias

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mittelwert aus mehreren Spalten bilden
18.06.2007 13:26:00
Hajo_Zi
HAllo Tobias,
warum Makro, das geht auch mit Formel.
in B1 =WENN(ISTFEHLER(MITTELWERT(INDIREKT("A"&(ZEILE()-1)*10+1&":A"&(ZEILE()-1)*10+10)));"";MITTELWERT(INDIREKT("A"&(ZEILE()-1)*10+1&":A"&(ZEILE()-1)*10+10)))
und Doppelklick auf die untere rechte Ecke.

AW: Mittelwert aus mehreren Spalten bilden
18.06.2007 13:27:16
Andreas
Hallo Tobias,
als erster Vorschlag (wertet nur 10er Blöcke aus):
Dim Summe As Double
Dim i, j, k As Integer
With ActiveSheet
For i = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
j = j + 1
Summe = Summe + .Cells(i, 1)
If j = 10 Then
j = 0
k = k + 1
.Cells(k, 2) = Summe / 10
Summe = 0
End If
Next i
End With
Grüße
Andreas

Anzeige
AW: Danke
18.06.2007 14:54:00
Tobias
Hallo Andreas,
danke für den VBÁ Code, funzt echt super!!!
Danke auch für die anderen Möglichkeiten, aber ich brauche leider einen VBA Code.
Gruß
Tobias

AW: Mittelwert aus mehreren Spalten bilden
18.06.2007 13:30:00
ottoh
Hallo Tobias,
schreibe folgende Formel in B1 und kopiere runter:
=MITTELWERT(INDIREKT("a"&(ZEILE()-1)*10+1):INDIREKT("A"&ZEILE()*10))
Gruß OttoH

AW: Mittelwert aus mehreren Spalten bilden
18.06.2007 13:48:17
Tom
Hallo Tobias,
eine weitere Möglichkeit mit Formeln in den Zellen B1, B2 usw:
Sub Mittelwert() Dim i As Long Dim dbWert() As Double Dim lnZeilen As Long Dim lnAbschnitte As Long Dim lnZaehler As Long lnZeilen = ActiveSheet.UsedRange.Rows.Count lnAbschnitte = Int(lnZeilen / 10) ReDim dbWert(lnZeilen) lnZaehler = 1 For i = 1 To lnZeilen dbWert(i) = Cells(i, 1).Value If i Mod 10 = 0 Then Cells(lnZaehler, 2) = "=SUM(A" & i - 9 & ":A" & i & ")/10" lnZaehler = lnZaehler + 1 End If Next i End Sub


Gruß
Tom

Anzeige
AW: Mittelwert aus mehreren Spalten bilden
18.06.2007 14:52:00
ingUR
Hallo, Tobias,
was Du da berechnen willst, ist als "gleitender Durchnitt" (Average) bekannt.
Neben den hier bereits vorgestellten funktionierenden Lösungen, habe ich hier noch eine Zellenfunktionslösung, die ich in ihrer Anwendung der Zellenformel Mittelwert unter Einsatz der BEREICH.VERSCHIEBEN-Funktion vorstelle:
 
 ABCD
1    
2DatumClose  
302.05.077.455,93  
403.05.077.476,69  
504.05.077.516,76  
607.05.077.525,69  
708.05.077.442,207.483,457.483,45
Formeln der Tabelle
C3 : =WENN(ZEILE()<7;"";GD(B3;5))
D3 : =WENN(ZEILE()<7;"";MITTELWERT(BEREICH.VERSCHIEBEN(B3;-4;0;5;1):B3))
C4 : =WENN(ZEILE()<7;"";GD(B4;5))
D4 : =WENN(ZEILE()<7;"";MITTELWERT(BEREICH.VERSCHIEBEN(B4;-4;0;5;1):B4))
C5 : =WENN(ZEILE()<7;"";GD(B5;5))
D5 : =WENN(ZEILE()<7;"";MITTELWERT(BEREICH.VERSCHIEBEN(B5;-4;0;5;1):B5))
C6 : =WENN(ZEILE()<7;"";GD(B6;5))
D6 : =WENN(ZEILE()<7;"";MITTELWERT(BEREICH.VERSCHIEBEN(B6;-4;0;5;1):B6))
C7 : =WENN(ZEILE()<7;"";GD(B7;5))
D7 : =WENN(ZEILE()<7;"";MITTELWERT(BEREICH.VERSCHIEBEN(B7;-4;0;5;1):B7))
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Die dazugehörige Funktionsprozedur kannst Du in den Standardmodulordner des VBA-Projekts legen:
Option Explicit Const HEADERROWS As Long = 2 Function GD(ByRef rngC As Range, nView As Integer) As Double Dim Spalte As Integer, Zeile As Long Zeile = rngC.Row If Zeile - HEADERROWS Je nach anzahl der Kopfzeilen über Deiner Tabelle kann der Konstanten HEADERROWS der entsprechende Wert zugewiiesen werden.
Die Anzahl der Werte mit denen der gleitende Durchnitswert berechnet wird, wird in der Zellenformel als zweiter Parameter der Funktion übergeben. Wegen der Flexibilität in der Anzahlgröße ist die WENN-Abfrage erforderlich, es sei den, mann möchte den mittelwert im Anfangsbereich mit der Anzahl der Werte ermitteln, die zur verfügung stehen, bis dann nur noch der Festwert anzuwenden ist:
GD(Datenspalte; MIN(10;Zeile()-Anzahl der Kopfzeilen))
z.B.
=GD(B6;MIN(5;ZEILE()-ZEILE($A$2)))
Wenn dieses Ergebnis gewünscht ist, dann wäre es auch möglich, dieses direkt in der Funktionprozedur zu berücksichtigen:

Option Explicit
Const HEADERROWS As Long = 2
Function GD(ByRef rngC As Range, nView As Integer) As Double
Dim Spalte As Integer, Zeile As Long
Zeile = rngC.Row
Spalte = rngC.Column
GD = Application.WorksheetFunction _
.Average(Range(Cells( Application.Max(HEADERROWS + 1, Zeile - nView + 1),  _
Spalte), Cells(Zeile, Spalte)))
End Function

Die Zellenformel vereinfacht sich zu: =GD(B3;5)
Gruß,
Uwe

Anzeige

116 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige