AW: Matrix automatisch füllen
04.11.2006 18:30:22
Erich
Hallo Thomas,
jetzt fangen B und C in der letzten Zeile an:
| A | B | C |
1 | 1 | | |
2 | 2 | | |
3 | 4 | | |
4 | 8 | 12,4 | 12,4 |
5 | 16 | 18,6666667 | 18,6666667 |
6 | 32 | 32 | 32 |
Formeln der Tabelle |
Zelle | Formel | C1 | =WENN((ZEILE()<=ANZAHL($A:$A)/2)+(ZEILE()>ANZAHL($A:$A))>0;""; MITTELWERT(BEREICH.VERSCHIEBEN($A$1;2*(ZEILE()-ANZAHL($A:$A)/2)-1;;2*(ANZAHL($A:$A)-ZEILE())+1))) | C2 | =WENN((ZEILE()<=ANZAHL($A:$A)/2)+(ZEILE()>ANZAHL($A:$A))>0;""; MITTELWERT(BEREICH.VERSCHIEBEN($A$1;2*(ZEILE()-ANZAHL($A:$A)/2)-1;;2*(ANZAHL($A:$A)-ZEILE())+1))) |
|
Und hier der Code für Spalte B:
Sub Mittelwerte4()
Dim Anz As Long, ii As Long, zz As Long, nn As Long, sum As Double
Columns(2).ClearContents
Anz = [A65536].End(xlUp).Row ' wenn ungerade, bleibt A1 unberücksichtigt
nn = 1
ii = Anz
zz = Anz
While ii > 1
sum = sum + Cells(ii, 1) + Cells(ii + 1, 1)
Cells(zz, 2) = sum / nn
ii = ii - 2
nn = nn + 2
zz = zz - 1
Wend
End Sub
zz=ii/2-0.1 sollte die Rundung richtigstellen. VBA wandelt ii/2 in eine ganze Zahl um (wie per CLng())
und rundet dabei nicht so wie ich es brauchte.
Schau mal in der VBA-Hilfe bei CLng und probier mal (auf einem leeren Blatt) aus:
Sub rund()
Dim ii As Long, zz As Long
For ii = 1 To 11
zz = ii / 2 - 0.1
Cells(ii, 7) = zz
zz = ii / 2
Cells(ii, 8) = zz
zz = CLng(ii / 2)
Cells(ii, 9) = zz
Next
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort