Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Matrix automatisch füllen

Matrix automatisch füllen
03.11.2006 14:17:22
Thomas
Hallo,ich brauch mal eure Hilfe.
ich habe in einer Spalte( z.b. A:) Werte.Die Grösse dieser Matrix ist nicht immer gleich.
die nächste Spalte(also B:) soll automatisch mit den Mittelwerten aufgefüllt werden und zwar in der Form: in der vorletzten Zeile von B: steht der Mittelwert der letzten drei Werte von A:, darüber der Mittelwert der letzten 5 Werte von A: , in der darüber der Mittelwert der letzten 7 Werte von A: usw.
Bei z.B. 501 A:-Werten erhält man also 251 B:-Werte.
Es müsst also erst die Länge von Matrix A ermittelt werden und dann die automatische Füllung von B durchgeführt werden.
Vielleicht kann mir jemand bei dem VBA-code helfen
Danke Thomas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrix automatisch füllen
03.11.2006 14:43:14
Ptonka
Hallo,
versuche es mal mit diesem Code:
Sub Mittelwerte() Anzahl = [A65536].End(xlUp).Row For i = Anzahl - 2 To 1 Step -2 Summe = 0 For j = i To Anzahl Summe = Summe + Cells(j, 1).Value Next j Cells(i + 1, 2).Value = Summe / (Anzahl - i + 1) Next i End Sub
Gruß,
Ptonka
P.S. Feedback wäre schön!!!
AW: Matrix automatisch füllen
03.11.2006 15:33:03
Thomas
Danke, prima Ptonka, dass hilft mir schon mal, allerdings überlege ich gerade wie ich deinen code verändern muss, um die Leerzellen wegzukriegen(alle erechneten B:-Zellen sollen direkt übereinander (ohne Leerfelder) ,da ich als nächstes die Korrelation der beiden Matrixen in C: berechnen will und zwar auch übereinander ,also auch letzten zwei Werte von A: und B:,dann die letzten drei Werte von A: und B: usw bis (meinen Beispiel folgend) die Korrelation der 251 A:und B:-Werte.Wäre schön ,wenn du mir nochmal helfen könntest.
Vielen dank jetzt schon Thomas
Anzeige
AW: Matrix automatisch füllen
04.11.2006 07:10:03
Erich
Hallo Thomas,
du kannst das auch mit Formeln erledigen:
 ABCD
11999
22121212
3416,333333316,333333316,3333333
47   
511   
616   
722   

Formeln der Tabelle
ZelleFormel
C1=WENN(ZEILE()>ANZAHL(A:A)/2;"";MITTELWERT(INDIREKT("A"&2*ZEILE()-1&":"&"a"&ANZAHL(A:A))))
D1=WENN(ZEILE()>(ANZAHL(A:A)-1)/2;"";MITTELWERT(INDIREKT("A"&2*ZEILE()-1+REST(ANZAHL(A:A)+1;2)&":"&"a"&ANZAHL(A:A))))
C2=WENN(ZEILE()>ANZAHL(A:A)/2;"";MITTELWERT(INDIREKT("A"&2*ZEILE()-1&":"&"a"&ANZAHL(A:A))))
D2=WENN(ZEILE()>(ANZAHL(A:A)-1)/2;"";MITTELWERT(INDIREKT("A"&2*ZEILE()-1+REST(ANZAHL(A:A)+1;2)&":"&"a"&ANZAHL(A:A))))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Spalte B wurde durch ein Makro ausgefüllt:
Option Explicit
Sub Mittelwerte2()
Dim Anz As Long, ii As Long, j As Long, zz As Long, nn As Long, sum As Double
Anz = [A65536].End(xlUp).Row ' sollte ungerade sein (sonst bleibt A1 unberücksichtigt)
sum = Cells(Anz, 1)
nn = 3
ii = Anz - 1
zz = ii / 2 - 0.1
Columns(2).ClearContents
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
Was soll eigentlich passieren (mit A1), wenn in A eine gerade ANzahl Zellen gefüllt ist?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Matrix automatisch füllen
04.11.2006 11:01:58
Thomas
Hallo Erich und danke,
das sieht schon alles prima aus(vb-code), die Formel muss ich erst mal genauer anschauen) .Da ich aber noch damit weiterrechnen möchte(Korrelation) und dies alles graphisch darstellen möchte,sollte die Matrix B: mit deinem code an der vorletzten Stelle(der ermittelten Länge von A:) beginnen und die letzte (also unterste) hat den Wert vom letzten Wert von A:
Ich habe auch schon versucht deinen Code dahingehend zu verändern,doch da ich am Anfang des Lernprozesses mit VB stehe, will es nicht gelingen.Vielleicht schenkst du mir noch ein wenig Zeit.
Zu A1 und gerade:Je grösser Matrix A und damit Matrix B: desto geringer ist der Einfluss von A1, soll heissen , wenn A1 rausfällt ist es nicht so tragisch.
Danke Thomas
Anzeige
AW: Matrix automatisch füllen
04.11.2006 12:15:03
Erich
Hallo Thomas,
isses das?
 ABC
1115,714285715,7142857
2220,820,8
3423,666666723,6666667
4223333
511  
616  
722  
833  

Formeln der Tabelle
ZelleFormel
C1=WENN(ZEILE()>=ANZAHL(A:A)/2+1;"";WENN(ZEILE()=ANZAHL(A:A)/2+1; INDIREKT("A"&ANZAHL(A:A));MITTELWERT(INDIREKT("A"&2*ZEILE()-1+REST(ANZAHL(A:A)+1;2)&":"&"A"&ANZAHL(A:A)))))
C2=WENN(ZEILE()>=ANZAHL(A:A)/2+1;"";WENN(ZEILE()=ANZAHL(A:A)/2+1; INDIREKT("A"&ANZAHL(A:A));MITTELWERT(INDIREKT("A"&2*ZEILE()-1+REST(ANZAHL(A:A)+1;2)&":"&"A"&ANZAHL(A:A)))))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Spalte B kommt wieder aus
Option Explicit
Sub Mittelwerte3()
Dim Anz As Long, ii As Long, j As Long, zz As Long, nn As Long, sum As Double
Columns(2).ClearContents
Anz = [A65536].End(xlUp).Row ' sollte ungerade sein (sonst bleibt A1 unberücksichtigt)
sum = Cells(Anz, 1)
nn = 3
ii = Anz - 1
zz = ii / 2 - 0.1
Cells(zz + 1, 2) = Cells(Anz, 1)
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
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Matrix automatisch füllen
04.11.2006 13:56:42
Thomas
Hallo Erich und danke,
So ist das schon super, auch wenn die zweite Matrix nicht dort anfängt, wo der unterste A:-Wert ( für mich später der aktuellste,eingelesene Wert) ist. In deinem Beispiel oben würde also C8=33,C7=23,66666, C6=20,8 sein.
zwei Fragen hätte ich noch.Kannstdu mir sagen was die 0.1 in der codezeile zz=ii /2 -0.1
bedeutet bzw. warum man dies macht?
Kann ich deine Formel beim automatischen Auffüllen der nächsten Spalte nutzen;soll ja wie schon erwähnt eine "Korrelationsspalte" werden ,also korrel((letzte 3 Werte vonA:):(letzte 3 werte von B:)in der drittletzten Zeile von A: oder B: ,darüber korrel((letzte 4 Werte vonA:):(letzte 4 werte von B:) in der viertletzten Zeile von A: oder B:?
Einen VB-code für das automatische Auffüllen der neuen Spalte mit der Korrelation erscheint mir ziemlich schwierig.
Danke Thomas
Anzeige
AW: Matrix automatisch füllen
04.11.2006 18:30:22
Erich
Hallo Thomas,
jetzt fangen B und C in der letzten Zeile an:
 ABC
11  
22  
34  
4812,412,4
51618,666666718,6666667
6323232

Formeln der Tabelle
ZelleFormel
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
Anzeige
AW: Matrix automatisch füllen
04.11.2006 18:44:50
Erich
Hallo nochmal.
Sorry, bei dem Makro ist mir noch was durchgerutscht - also nochmal:
Sub Mittelwerte4()
Dim ii As Long, zz As Long, nn As Long, sum As Double
Columns(2).ClearContents
ii = [A65536].End(xlUp).Row              ' wenn ungerade, bleibt A1 unberücksichtigt
zz = ii
nn = 1
While ii > 0
sum = sum + Cells(ii, 1) + Cells(ii + 1, 1)
Cells(zz, 2) = sum / nn
ii = ii - 2
zz = zz - 1
nn = nn + 2
Wend
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Matrix automatisch füllen
05.11.2006 10:33:21
Thomas
Hallo Erich und Danke,
SUPER,genau so hatte ich es mir vorgestellt.Danke auch für die Erklärung des Code.Da du nichts zu der nächsten Spalte mit der Korrelation geschrieben hast ,stelle ich die Frage nochmal ins Netz.
Danke Thomas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige