Estrarre dati



  • Estrarre dati
    di Emanuele (utente non iscritto) data: 20/10/2014 23:07:45

    Ciao a tutti,

    ho bisogno del vostro aiuto.

    In pratica ho una tabella di 6 colonne e molte righe....in una di queste colonne è indicata la quantità di un prodotto.

    In pratica io vorrei, in un secondo foglio, estrarre tutte e solo le righe dove la quantità sia un numero maggiore di zero.

    E' possibile con una funzione o una macro fare quello che mi serve?

    Grazie mlile in anticipo



  • di Lucas87 data: 20/10/2014 23:21:43

    Ciao
    Ecco qua.
    Come colonna con i valori ora è impostata la C. Cambia il codice con la colonna che ti interessa
     
    Sheets(2).Cells.ClearContents
    r = 1
    For i = 1 To Range("c" & Rows.Count).End(xlUp).Row  'c è la colonna con i valori
        If Cells(i, 3) > 0 Then         '3 è la colonna C
            Sheets(2).Rows(r) = Rows(i).Value
            r = r + 1
        End If
    Next
    



  • di Emanuele (utente non iscritto) data: 21/10/2014 09:37:26

    Ti ringrazio moltissimo per la risposta.
    Il problema è che il mio livello è molto scarso e non riesco a far funzionare il tuo codice

    Ricapitolando, io in pratica vorrei ricreare sul foglio 2 la stessa tabella che ho sul foglio1 ma con solo le righe che presentano un valore maggiore di zero nella colonna quantità (colonna e)
    Io ho aperto VB con alt+F11, tramite gestore progetti mi posiziono sul foglio 2, tasto destro e inserisci modulo. Mi si apre la finestra vuota, clicco su esegui macro, inserisco il nome e poi incollo il codice che mi hai passato modificando C con E è 3 con 5. Salvo ed esco
    Se poi mi posiziono sul foglio 2 ed eseguo la macro non succede nulla, anzi mi cancella qualunque dato presente sul foglio

    Perdonate la mia ignoranza ma non so proprio come risolvere

    Grazie




  • di lepat (utente non iscritto) data: 21/10/2014 09:43:46

    se alleghi un file di esempio con anche spiegazioni dettagliate otterrai risposte più mirate, comunque il codice succerito lo devi mettere in un modulo standard e non in un modulo del foglio2.



  • di Lucas87 data: 21/10/2014 10:32:31

    Mettendo il codice sul foglio1 eviti qualsiasi problema



  • di Emanuele (utente non iscritto) data: 21/10/2014 10:35:42

    Ho allegato alla discussione un file di esempio semplificato.
    Nel foglio1 l'unica variabile è la quantità, quanto questa è diversa da zero vorrei che in automatico la riga, tutta la riga comparisse nella tabella sul foglio 2

    Spero che sia più chiaro

    Grazie




  • di Lucas87 data: 21/10/2014 11:26:24

    Ciao
    Diciamo che il file è fatto da schifo....
    1-I fogli sono invertiti e sono stati rinominati quindi bisogna fare attenzione ai riferimenti
    2-Sul foglio con nome Foglio2 (che in realtà sarebbe il foglio1), tutte quelle colonne unite creano problemi. Invece di unirle è sufficiente modificarne la larghezza.

    Ho modificato il codice. Va incollato nel Foglio4(Foglio1)
     
    Sheets(2).Cells.ClearContents
    r = 10
    For i = 1 To Range("e" & Rows.Count).End(xlUp).Row
        If IsNumeric(Cells(i, 5)) = True And Cells(i, 5) > 0 Then
            Sheets(2).Rows(r) = Rows(i).Value
            r = r + 1
        End If
    Next



  • di Emanuele (utente non iscritto) data: 22/10/2014 09:35:00

    Mi spiace per il foglio di lavoro incasinato

    Cmq sono riuscito a far funzionare le istruzioni che mi avete passato, grazie mille a tutti per il supporto.
    Se posso approfittare ancora un po' della vostra gentilezza avrei ancora una cosa da chiedere:

    Magari anche organizzando diversamente il foglio non è possibile fare la stessa cosa con una funzione e semplificare ancora di più il tutto? Lo chiedo anche perché sempre per colpa della mia ignoranza non so far funzionare una macro in automatico, quindi ora compilo la mia colonna delle quantità e poi avvio la macro... Rifaccio il procedimento ogni volta che modifico una quantità

    Grazie ancora



  • di Lucas87 data: 22/10/2014 10:10:28

    Ciao
    Il codice per far partire la macro quando viene modificata una cella è quello sotto (funziona per la colonna 6, la F).
    Il problema è capire quando far partire la macro. Ora in pratica viene avviata quando si inserisce il totale in quanto presumo sia l'ultimo valore che andrai ad inserire.
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 6 Then
        '...codice
    End If
    End Sub