estrazione dati da matrice



  • estrazione dati da matrice.
    di Pietro (utente non iscritto) data: 12/02/2013 20:36:26

    Ciao a tutti,
    vorrei sapere se qualcuno fosse così gentile da aiutarmi sul seguente quesito.

    Dalla tabella A di Excel che riporto sotto, vorrei arrivare ad avere la tabella B che riporto sempre sotto.

    Preciso che la tabella A contiene in realtà circa 1000 righe (coppie di valori) e 130 colonne (un numero).
    Ogni cella della matrice può assumere 3 valori: Vuota, 1, S

    La tabella B deve essere così creata partendo dalla tabella A:
    quando la cella assume valore 1 o S (indifferentemente), deve essere riportata la coppia di valori (es. A,X) relativa alla riga in cui si trovano l'1 o la S e, a fianco, il numero inserito nell'intestazione della colonna in cui si trovano l'1 o la S (es. 3).

    Qualcuno sa come aiutarmi?

    Ringrazio anticipatamente chiunque volesse darmi una mano,
    Pietro
     
      TABELLA A
               40    41    42   43
    A  X      
    B  Y             S      1
    C  W
    D  Z             S     
    
    TABELLA B
    Col1   Col2   Col3
    
    B       Y       41
    B       Y       42
    D       Z       42



  • di mabolsie (utente non iscritto) data: 12/02/2013 21:38:50

    Ciao Pietro, non è molto semplice, infatti dovresti crearti una macro con dei cicli For per passare tutte le celle nella regione dei dati della tabella A e copiare le celle con s o 1 nella tabella B.
    Con il codice vba è un bel lavoro !!!
    Hai provato con i filtri di Excel ?
    Ti intedi di codice vba ??
    Spero di esserti stato utile
    Ciao Max



  • di Pietro (utente non iscritto) data: 13/02/2013 09:36:29

    Non conosco il linguaggio VBA. Ho fatto alcune basi di programmazione a scuola (Pascal) quindi so cosa è un ciclo for ma non so metterlo in VBA. Sai indicarmi un sito dove è spiegato come implementare un ciclo del genere?



  • di HarryBosch data: 13/02/2013 15:36:13

    Ciao Pietro,
    sei già sul sito giusto ^_^

    Se guardi sotto il Forum troverai le voci "Corso Base Excel VBA, Approfondimenti, Tutorial" ecc.. dove troverai dell'ottimo materiale, sicuramente anche sui cicli, parte essenziale di ogni linguaggio di programmazione.

    Ad ogni modo testa anche una routine che ti propongo qua sotto; le condizioni che richiede sono:
    - che le due stringhe da riportare sulla nuova tabella si trovino nella tabella originale lungo la colonna A e B
    - la nuova tabella viene creata nel Foglio2, eventualmente da modificare nel codice
     
    Sub nuova_tabella()
        Dim r As Integer, c As Integer
        Dim uc As Integer, riga As Integer
        
        uc = Cells.Find(What:="*", After:=[A1], searchorder:=xlByColumns, SearchDirection:=xlPrevious).Column
    
        With Sheets("Foglio2")
            For r = 1 To [counta(a:a)]
    
                For c = 3 To uc
                    If Cells(r, c) = "S" Or Cells(r, c) = 1 Then
                        riga = riga + 1
                        .Cells(riga, 1) = Cells(r, 1)
                        .Cells(riga, 2) = Cells(r, 2)
                        .Cells(riga, 3) = Cells(r, c).Column
                    End If
                Next
    
            Next
        End With
    End Sub