Thema Datum  Von Nutzer Rating
Antwort
Rot  Spalten aus Range als Range ausgeben, ...
22.04.2006 11:49:09 TiredHornet
NotSolved
10.05.2006 09:19:40 Rasta
NotSolved
11.05.2006 11:02:27 TiredHornet
NotSolved

Ansicht des Beitrags:
Von:
TiredHornet
Datum:
22.04.2006 11:49:09
Views:
1997
Rating: Antwort:
  Ja
Thema:
Spalten aus Range als Range ausgeben, ...
Ich muss für mein Studium (BWL) eine Funktion-Programmieren die eine Covarianz-Varianz-Matrize berechnet. Die Funktion für die erwartungsgetreue Covarianz konnte ich schon mal programmieren. Die Covarianz-Varianz-Matrize bereite mir probleme.
Ich erkläre erstmal was die Funktion machen soll:

Sie soll eine rechteckiges Datenfeld entgegen nehmen, und jeweils die Covarianz der Kolone mit sich selber(also Varianz) und mit jeder andern Kolone berechnen. Ausgegeben wir das Resultat als der Grösse Kolone x Kolone.

Meine drängendste Frage ist, wie kann ich spalten aus einem Range als Range ausgeben?

Hier mal was ich bisher Programmiert habe:

Option Explicit
Option Base 1

Function Cov(x As Range, y As Range) 'kovarianz funktioniert gut

Dim n As Integer
Dim xmean As Long
Dim ymean As Long
Dim sumx As Long
Dim sumy As Long
Dim sumdistxy As Long
Dim i As Integer
Dim testx As Boolean
Dim testy

Application.Volatile

testx = x.Rows.Count > 1 And x.Columns.Count > 1

If testx = True Then
MsgBox (""X-Array can only be 1 colum Or row wide"")
Cov = CVErr(xlErrNA)
Exit Function
Else: End If

testy = y.Rows.Count > 1 And y.Columns.Count > 1

If testy = True Then
MsgBox (""Y-Array can only be 1 colum Or row wide!"")
Cov = CVErr(xlErrNA)
Exit Function
Else: End If

n = x.Cells.Count
sumx = 0
For i = 1 To n
sumx = sumx + x(i) 'beim benutzen der Cov-Funktion für die CovMatrix bricht es jeweils hier ab.
'ich schätze mal es kann aus x(i) nicht lesen, weil x kein range ist. (siehe weiter unten)
Next

xmean = sumx / n

sumy = 0
For i = 1 To n
sumy = sumy + y(i)
Next

ymean = sumy / n

sumdistxy = 0
For i = 1 To n
sumdistxy = sumdistxy + ((x(i) - xmean) * (y(i) - ymean))
Next

Cov = sumdistxy / (n - 1)

End Function

Function CovMatrix(data As Range) 'hier fangen die probleme an

Dim nc As Integer
Dim c As Integer
Dim r As Integer
Dim Result() As Double
Dim i As Integer
Dim k As Integer

nc = data.Columns.Count
ReDim Result(nc, nc)

For c = 1 To nc
For r = 1 To nc
For i = 1 To nc
For k = 1 To nc
Result(c, r) = Cov(data.Columns(i),data.Columns(k)) 'gibt mir data.colums(i) die kolone i als range zurück?
'ich glaube hier liegt meine derzeitiges problem
Next k
Next i
Next r
Next c

CovMatrix = Result

End Function

Meine erstes Problem liegt darin das data.columns(i)anscheinend nicht die Kolone i as Range ausgibt. Wie mache ich das? Ob der Rest stimmt vermag ich noch nicht zu sagen.

Hilfe wäre sehr willkommen!

Gruss TiredHornet

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot  Spalten aus Range als Range ausgeben, ...
22.04.2006 11:49:09 TiredHornet
NotSolved
10.05.2006 09:19:40 Rasta
NotSolved
11.05.2006 11:02:27 TiredHornet
NotSolved