Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
864to868
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
864to868
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro: Mittelwert von Spalten & vari. Zeilenanzahl

Makro: Mittelwert von Spalten & vari. Zeilenanzahl
25.04.2007 09:12:00
Spalten
Hallo,
ich habe ein kleines Makro-Problem.
Ich habe eine große Anzahl an Tabellen mit einer festen Spaltenanzahl (101 Spalten), aber immer unterschiedlichen Zeilenanzahlen. Ich brauch nun aber die Mittelwerte und Standardabweichungen für die einzelnen Spalten. Es kommt nun auch immer vor, dass in einigen Spalten einige Male eine 0 zwischen den Messwerten steht. Diese soll in der Berechnung nicht berücksichtigt werden. Auch sind am Rand immer Spalten, in denen keine Messwerte aufgenommen werden, welche dann aber mit Nullen ausgefüllt werden. Für diese Spalten sollte dann bei dem Mittelwert und der Standardabweichung auch ein Null übernommen werden.
Ach ja und eigentlich brauche ich diese errechneten Werte in einer neuen Tabelle aber in transponierter Form.
Alle anderen Berechnungen und Formatierungen, die dieses Marko machen soll, habe ich schon hinbekommen. Ich hoffe ihr könnt mir bei dieser Aufgabe weiterhelfen.

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

Betreff
Datum
Anwender
Anzeige
AW: Makro: Mittelwert von Spalten & vari. Zeilenanzahl
25.04.2007 14:29:43
Spalten
Ich hab dir das Makro nochmal überarbeitet, jetzt ist der Laufzeitfehler weg und Nullen oder leere Zellen stören auch nicht mehr. bei Nullwerten schreibt das Makro als Mittelwert 0 und Sta.abw. auch 0, ne Schleife ist es allerdings immer noch nicht (Etwas Schreibarbeit), aber es geht wenigstens.

Sub MittelwertStandardabweichung()
Dim lngLastRow As Long
Dim z As Integer
Range("A11").Value = ""
Range("A12").Value = ""
For z = 100 To 1 Step -1
If Cells(z, 1).Value = 0 Then
Cells(z, 1).Value = ""
End If
Next
Range("A10").Value = ""
With Sheets("Tabelle1")
lngLastRow = .Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("$A$1:$A$" & lngLastRow).Select
Range("A10").Formula = WorksheetFunction.Sum(Selection)
End With
If Range("A10").Value  0 Then
Range("A10").Value = ""
With Sheets("Tabelle1")
lngLastRow = .Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("A11").Value = WorksheetFunction.Average(Range("$A$1:$A$" & lngLastRow))
Range("A12").Value = WorksheetFunction.StDevP(Range("$A$1:$A$" & lngLastRow))
End With
Else
Range("A11").Value = 0
Range("A12").Value = 0
End If
Range("B11").Value = ""
Range("B12").Value = ""
For z = 100 To 1 Step -1
If Cells(z, 2).Value = 0 Then
Cells(z, 2).Value = ""
End If
Next
Range("B10").Value = ""
With Sheets("Tabelle1")
lngLastRow = .Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("$B$1:$B$" & lngLastRow).Select
Range("B10").Formula = WorksheetFunction.Sum(Selection)
End With
If Range("B10").Value  0 Then
Range("B10").Value = ""
With Sheets("Tabelle1")
lngLastRow = .Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("B11").Value = WorksheetFunction.Average(Range("$B$1:$B$" & lngLastRow))
Range("B12").Value = WorksheetFunction.StDevP(Range("$B$1:$B$" & lngLastRow))
End With
Else
Range("B11").Value = 0
Range("B12").Value = 0
End If
End Sub


Gruß
Christian

Anzeige
AW: Makro: Mittelwert von Spalten & vari. Zeilenanzahl
25.04.2007 12:59:00
Spalten
Servus,
also für eine einzelne Spalte kann ich dir das zeigen, hier hab ich das für Spalte A und B aufgeführt (zweimal der gleiche Ablauf):

Sub MittelwertStandardabweichung()
Dim lngLastRow As Long
Dim z As Integer
Range("A10").Value = "" 'Zielzelle für Mittelwert wird auf leer gesetzt
Range("A11").Value = "" 'Zielzelle für Standardabweichung wird auf leer gesetzt
For z = 100 To 1 Step -1
If Cells(z, 1).Value = 0 Then
Cells(z, 1).Value = ""
End If         'Nullwerte in Spalte A werden auf leer gesetzt (keine Berücksichtigung bei  _
Mittelwert)
Next
With Sheets("Tabelle1")
lngLastRow = .Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("A10").Value = WorksheetFunction.Average(Range("$A$1:$A$" & lngLastRow))
Range("A11").Value = WorksheetFunction.StDevP(Range("$A$1:$A$" & lngLastRow))
End With ' letzte zeile finden und Mittelwert und Sta.abw. berechnen
Range("B10").Value = "" 'dasselbe Spiel für Spalte B
Range("B11").Value = ""
For z = 100 To 1 Step -1
If Cells(z, 2).Value = 0 Then
Cells(z, 2).Value = ""
End If
Next
With Sheets("Tabelle1")
lngLastRow = .Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("B10").Value = WorksheetFunction.Average(Range("$B$1:$B$" & lngLastRow))
Range("B11").Value = WorksheetFunction.StDevP(Range("$B$1:$B$" & lngLastRow))
End With
End Sub


ist natürlich ein bißchen aufwendig für 101 Spalten, weil man das für jede Spalte hinschreiben und anpassen muß, aber als Schleife hab ich's auch nicht hinbekommen.
Es funktioniert jedenfalls. Bei Zellen mit Nullwerten oder Leerzellen kommt hier allerdings Fehler 400.
Vielleicht hilft es dir ja ein Stück weiter
Gruß
Christian

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige