SUMME und MITTELWERT pro Spalte per VBA
29.03.2010 11:50:29
NoNet
Hallo Karsten,
hier eine Lösung - jedoch ohne MATRIX, sondern nur per VBA :
Sub SpaltenMitZahlenBefuellen()
Dim lngS As Long, lngZ As Long
'In Spalten A:F zufälig zw. 10 bis 20 Zahlen mit Wert 0 bis 100 ausgeben :
For lngS = 1 To 6
For lngZ = 1 To 10 + Int(Rnd() * 10) + 1
Cells(lngZ, lngS) = Int(Rnd() * 100)
Next
Next
End Sub
Sub SpaltenMittelwertUndSumme()
Dim lngS As Long, lngZ As Long
'Letzte belegte Zeilennummer ausgeben - kann auch weggelassen werden :
Range("A23:F23").FormulaR1C1 = "=LOOKUP(2,1/(R[-22]C:R[-3]C""""),ROW(R[-22]C:R[-3]C))"
For lngS = 1 To 6
lngZ = Cells(Rows.Count, lngS).End(xlUp).Row
'SUMME()-Funktion in Zeile 25 :
Cells(25, lngS).FormulaR1C1 = "=SUM(R[-24]C:R[-" & 25 - lngZ & "]C)"
'MITTELWERT()-Funktion in Zeile 26 :
Cells(26, lngS).FormulaR1C1 = "=AVERAGE(R[-25]C:R[-" & 26 - lngZ & "]C)"
Next
End Sub
Mit dem ersten Makro werden zufällig zw. 10 bis 20 Zahlen pro Spalte A:F erzeugt (für Dich nicht notwendig, da Du die Zahlen ja bereits hast).
Mit dem zweiten Makro wird in Zeile 23 per VERWEIS()-Funktion die letzte belegte Zeilennr. der Spalte angezeigt und in Zeile 25 diese Zahlen summiert und in Zeile 26 der MITTELWERT eingetragen.
Eigentlich ist es nicht notwendig, den exakten RANGE zu bestimmen, da SUMME und MITTELWERT die leeren Zellen ignorieren, bzw. diese keine Auswirkung auf das Ergebnis haben.
Man könnte also auch in allen Spalten fix bis Zeile 20 summieren und den Mittelwert bilden - aber das hast du in der Aufgabenstellung ja ausgeschlossen...
Gruß, NoNet