Creazione di una matrice di correlazione via VBA di Excel

Quale sarebbe il modo migliore per creare una matrice di correlazione via VBA di Excel? I miei dati sono 45 colonne (che alla fine potrebbero cambiare) e 12000 righe (che possono cambiare così). Stavo andando a utilizzare solo il correl funzione sul foglio, ma come ho detto, la mia colonne e di righe che possono cambiare con il tempo.

Qualsiasi aiuto sarà molto apprezzato!

InformationsquelleAutor Kristina | 2013-04-16



3 Replies
  1. 3
     Application.Run "ATPVBAEN.XLAM!Mcorrel", ActiveSheet.Range("$C$3:$F$6"), _
        ActiveSheet.Range("$C$10"), "K", False //"K" might be "C"=column

    per eseguire questo è necessario abilitare l’Analisi dei Dati Toolpack (pacchetto) di prima.
    È possibile utilizzare questo tramite l’interfaccia scheda di Analisi dei Dati->matrice di correlazione

    qui:

    "$C$3:$F$6" - input (square matrix)
    $C$10 - output cell
    "K" (or "C") - group by columns
    false - labels=no
    • Ho P:\ATPVBAEN.XLAM cannot be found. Try a different path. Gli strumenti di analisi si trova nel nostro Disco C e posso ottenere il percorso di dove si trova, ma non so come modificare il codice sopra per farlo.
    • è necessario attivare questa via nastro->Excel Opzioni->Add-in->gestione
    • C’è un modo per la matrice di correlazione per essere aggiornato immediatamente se l’intervallo di dati modifiche?
    • sì, ma poi gli eventi. È possibile scrivere il codice nella routine evento Worksheet_Change a prendere un po ‘ di azione a seconda della cella su cui è stato cambiato o in base al valore appena modificato. inoltre è possibile dare un voto positivo il mio post, grazie : p informazioni su eventi di Excel
    • Grazie ancora! Dal momento che io non sono troppo familiarità con gli eventi, ho optato per l’utente a fare clic su un pulsante. Ho un’ultima domanda. Come posso modificare i valori di errore nella mia matrice a 0?
    • cosa intendi per cambiare i valori di errore? intendi sostituire alcuni valori non corretti input?
    • e ricorda: il modo più semplice in Excel per sapere come il codice macro è quello di REGISTRARE le MACRO, è possibile farlo tramite la scheda sviluppo sulla barra multifunzione, la macro verrà registrata nel modulo e si può indagare in Excel “IDE” alt+F11

  2. 4

    Ho cercato il web per VBA Matrice di Correlazione Codice e havent trovato nulla di sostanza. Ha fatto parte di codice, me, non è bello, però fa il lavoro.
    Questo codice crea una matrice a destra dell’ultima serie di dati.

    Sub CorrelationMatrix()
    
    Dim y As Range
    Dim z As Range
    
    funds = Application.Workbooks("VBAcorrelation").Worksheets("Sheet1").Cells(1,       Columns.Count).End(xlToLeft).Column
    rader = 0
    For x = 1 To funds
            nyrad = Cells(Rows.Count, x).End(xlUp).Row
            If nyrad > rader Then
            rader = Cells(Rows.Count, x).End(xlUp).Row
        End If
    Next x
    
    
    
    p = 1
    u = 2
    
    For h = 1 To funds
    For u = 1 To funds
    
            Set y = ActiveSheet.Range(Cells(2, h), Cells(rader, h))
            Set z = ActiveSheet.Range(Cells(2, u), Cells(rader, u))
    
      Correl = WorksheetFunction.Correl(y, z)
    
     Worksheets("Sheet1").Cells(h + 1, funds + u + 3).Select
     ActiveCell = Correl
    
     Next u
     Next h
    
    MsgBox "Done with Matrix"
    End Sub
  3. 0

    Funziona benissimo:

    Option base 1  
          Function MCorrelation(rango As Range) As Variant
            Dim x As Variant, y As Variant, s As Integer, t As Integer, c() As Variant
            ReDim c(rango.Columns.Count, rango.Columns.Count)
            For i = 1 To rango.Columns.Count Step 1
             For j = 1 To i Step 1
            c(i, j) = Application.Correl(Application.Index(rango, , i), Application.Index(rango, , j))
             Next j
            Next i
             MCorrelation = c
            End Function
    • Aggiungere un po ‘ di spiegazioni la risposta per come questa risposta di aiuto OP di fissaggio problema attuale

Lascia un commento