| 
    Dim i, j 
    Dim nCls As Integer 
    Dim mtx() 
    With WorksheetFunction 
        nCls = rng.Columns.Count 
        'MsgBox nCls 
        ReDim mtx(1 To nCls, 1 To
  nCls) 
        For i = 1 To nCls 
            For j = 1 To nCls 
                mtx(i, j) =
  .Correl(rng.Columns(i), rng.Columns(j)) 
            Next j 
        Next i 
        xlCorrMtx = mtx 
    End With 
End Function 
Function xlCorrMtx_U(rng As Range) 
    Dim i, j 
    Dim nCls As Integer 
    Dim mtx() 
    With WorksheetFunction 
        nCls = rng.Columns.Count 
        'MsgBox nCls 
        ReDim mtx(1 To nCls, 1 To
  nCls) 
        For i = 1 To nCls 
            For j = 1 To nCls 
                If i <= j Then 
                    mtx(i, j) =
  .Correl(rng.Columns(i), rng.Columns(j)) 
                Else 
                    mtx(i, j) = 0 
                End If 
            Next j 
        Next i 
        xlCorrMtx_U = mtx 
    End With 
End Function 
Function xlCorrMtx_L(rng As Range) 
    Dim i, j 
    Dim nCls As Integer 
    Dim mtx() 
    With WorksheetFunction 
        nCls = rng.Columns.Count 
        'MsgBox nCls 
        ReDim mtx(1 To nCls, 1 To
  nCls) 
        For i = 1 To nCls 
            For j = 1 To nCls 
                If i >= j Then 
                    mtx(i, j) =
  .Correl(rng.Columns(i), rng.Columns(j)) 
                Else 
                    mtx(i, j) = 0 
                End If 
            Next j 
        Next i 
        xlCorrMtx_L = mtx 
    End With 
End Function | 
Sunday, May 29, 2016
Correlation matrix
Labels:
correlation,
Excel,
matrix,
VBA
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.