POPOLARE UNA MATRICE



  • POPOLARE UNA MATRICE
    di Macomac (utente non iscritto) data: 30/08/2014 23:51:48

    Buon giorno a tutti, vorrei sapere se è possibile popolare una matrice bidimensionale su vba direttamente da un file testo senza prima scaricare il file su un foglio excel visto che i dati che vorrei caricare sulla matrice hanno più di 1.200.000 righe

    Spero di essermi spiegato,

    Grazie in anticipo per l'interessamento

    Marco



  • di lepat (utente non iscritto) data: 31/08/2014 08:58:36

    allega il file di testo con 10 righe e spiega cosa ne farai della matrice



  • di Macomac (utente non iscritto) data: 31/08/2014 12:14:05

    Rinnovo il ringraziamento per l'interessamento e vado a rispondere:

    La matrice che voglio caricare è una serie storica di borsa, composta da 6 campi, DATA ORA APERTURA MAX MIN CHIUSURA. Allego un esempio con pochi dati come richiesto.

    Poi una volta che ho questa matrice popolata ci vorrei fare le cose più disparate, esattamente come se avessi i dati dalla colonna A alla colonna F del Foglio1 tanto per dire.

    Quindi vorrei calcolare delle medie, confrontare dei minimi e così via...

    Pur essendo poco più che un neofita del VBA provo a scrivere un po' di codice sperando che possa essere d'aiuto a chi avrà la pazienza di darmi una mano
     
    sub cercaminimo ()
    Dim myarray(150,6)
    Dim X as range
    
    ' qui vorrei popolare la matrice senza copiare i dati sul foglio excel ed appunto non so come si fa'
    ' poi una volta popolata la matrice faccio un semplice ciclo per controllare se il minimo attuale è minore del minimo di 10 righe prima
    
    For y = 100 to 150
    if myarray(y,5) < myarray(y-10,5) then
    x = y 
    end if
    next
    end sub



  • di Macomac (utente non iscritto) data: 31/08/2014 12:22:49

    Ho caricato il file testo, mi sono accorto che non ha 6 colonne ma 10, comunque non cambia nulla....

    Grazie ancora

    Marco



  • di Macomac (utente non iscritto) data: 31/08/2014 12:23:47

    Anzi le colonne sono 11, scusate ancora....



  • di lepat (utente non iscritto) data: 31/08/2014 13:54:31

    prova questo odice
     
    Sub textToMatrix()
    Dim matr()
    fname = "C:usersuserdesktopprova1.txt"
    arr1 = Split(CreateObject("scripting.filesystemobject").opentextfile(fname).readall, vbCrLf)
    nrighe = UBound(arr1) - 1
    ncol = UBound(Split(arr1(0), ","))
    ReDim matr(nrighe, ncol)
    For riga = 0 To nrighe
       arr2 = Split(arr1(riga), ",")
       For col = 0 To ncol
            matr(riga, col) = arr2(col)
       Next
    Next
    ' --------------- verifica da eliminare
    For r = 0 To nrighe
      For c = 0 To ncol
        Debug.Print matr(r, c); " ";
      Next
      Debug.Print
    Next
    End Sub
    



  • di Macomac (utente non iscritto) data: 31/08/2014 18:29:17

    GRAZIE lepat n.i.

    Funziona a meraviglia, ho provato a scrivere il primo e l'ultimo dato e sono perfetti quindi la matrice è stata caricata perfettamente.

    Ora studierò il codice per comprenderlo a fondo e andrò avanti con il progetto

    GRAZIE ancora per questo aiuto fondamentale

    a presto

    Marco