Korrelation mit Makro

26/06/2009 - 08:22 von Marco Schmid | Report spam
Hallo zusammen,

Ich habe vor einiger Zeit mit Hilfe der Newsgroup ein kleines Programm
zur Berechnung der Korrelation zweier Datenreihen (in Spalten B und C)
erstellt. Dabei wird nicht die Korrelation der ganzen Spalten, sondern
nur in jenem Bereich, welcher in den Zellen A1 und A2 eingerenzt ist,
berechnet. Soweit so gut. Das untenstehende Programm führt diese
Spezifikationen zur vollen Zufriedenheit aus. Nun würde ich das
Programm gerne erweitern. Es soll in Zukunft nicht nur die Korrelation
in B und C berechnet werden, sondern eine ganze Korrelationsmatrix
erstellt werden. Ich könnte nun das kleine Programm einfach mehrfach
nacheinander ausführen (natürlich Bezüge àndern). Bei 30 Titeln (0
Korrelation) wird das aber ein wenig aufwàndig und unübersichtlich...
Ich möchte das Ganze also mit einer For-Schlaufe lösen. Irgendwie
kriege ich das mit den Bezügen aber nicht hin... Die Code Zeile "Range
(.Cells(iVon, "B"), .Cells(iBis, "B")), " müsste irgendwie abgeàndert
werden können, damit anstatt "B" nun mit 2 und im nàchsten
Schlaufendurchlauf mit 3 etc. gerechnet werden könnte. Hat jemand eine
Idee wie ich das bewerkstelligen kann?

Besten Dank für Eure Hilfe und freundliche Grüsse
Marco Schmid

bisheriges Programm:
Sub myCorrel()
Dim wks As Worksheet
Dim iVon As Integer
Dim iBis As Integer
Set wks = Application.Worksheets("Tabelle4") 'anpssen
iVon = wks.Range("A1")
iBis = wks.Range("A2")
With wks
.Range("A3") = Application.WorksheetFunction.Correl( _
''Ausgabe in A3
.Range(.Cells(iVon, "B"), .Cells(iBis, "B")), _
.Range(.Cells(iVon, "C"), .Cells(iBis, "C")))
End With
End Sub
 

Lesen sie die antworten

#1 Wolfgang Habernoll
26/06/2009 - 08:58 | Warnen spam
Hallo Marco

"Marco Schmid" schrieb im Newsbeitrag
news:
Hallo zusammen,

Ich habe vor einiger Zeit mit Hilfe der Newsgroup ein kleines Programm
zur Berechnung der Korrelation zweier Datenreihen (in Spalten B und C)
erstellt. Dabei wird nicht die Korrelation der ganzen Spalten, sondern
nur in jenem Bereich, welcher in den Zellen A1 und A2 eingerenzt ist,
berechnet. Soweit so gut. Das untenstehende Programm führt diese
Spezifikationen zur vollen Zufriedenheit aus. Nun würde ich das
Programm gerne erweitern. Es soll in Zukunft nicht nur die Korrelation
in B und C berechnet werden, sondern eine ganze Korrelationsmatrix
erstellt werden. Ich könnte nun das kleine Programm einfach mehrfach
nacheinander ausführen (natürlich Bezüge àndern). Bei 30 Titeln (0
Korrelation) wird das aber ein wenig aufwàndig und unübersichtlich...
Ich möchte das Ganze also mit einer For-Schlaufe lösen. Irgendwie
kriege ich das mit den Bezügen aber nicht hin... Die Code Zeile "Range
(.Cells(iVon, "B"), .Cells(iBis, "B")), " müsste irgendwie abgeàndert
werden können, damit anstatt "B" nun mit 2 und im nàchsten
Schlaufendurchlauf mit 3 etc. gerechnet werden könnte. Hat jemand eine
Idee wie ich das bewerkstelligen kann?

Besten Dank für Eure Hilfe und freundliche Grüsse
Marco Schmid

bisheriges Programm:
Sub myCorrel()
Dim wks As Worksheet
Dim iVon As Integer
Dim iBis As Integer
Set wks = Application.Worksheets("Tabelle4") 'anpssen
iVon = wks.Range("A1")
iBis = wks.Range("A2")
With wks
.Range("A3") = Application.WorksheetFunction.Correl( _
''Ausgabe in A3
.Range(.Cells(iVon, "B"), .Cells(iBis, "B")), _
.Range(.Cells(iVon, "C"), .Cells(iBis, "C")))
End With
End Sub



natürlich kannst du statt "B" auch Variable einsetzen und in einer Schleife
hochzàhlen. Das könnte dann etwa so aussehen

Sub myCorrel()
Dim wks As Worksheet
Dim iVon As Integer
Dim iBis As Integer
Dim iCol As Integer
Dim lRow As Long
Set wks = Application.Worksheets("Tabelle4") 'anpassen
iVon = wks.Range("A1")
iBis = wks.Range("A2")
lRow = 3 ''Ausgabe ab A3

For iCol = 2 To 10 Step 2 ''anpassen hier für Col(B/C D/E F/G H/I J/K)
With wks
.Cells(lRow, 1) = Application.WorksheetFunction.Correl( _
.Range(.Cells(iVon, iCol), .Cells(iBis, iCol)), _
.Range(.Cells(iVon, iCol + 1), .Cells(iBis, iCol + 1)))
End With
lRow = lRow + 1
Next

End Sub


mfG
Wolfgang Habernoll

[ Win XP Home SP-2 , XL2002 ]

Ähnliche fragen