Condividi:        

[Excel] estrapolare dati da una tabella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] estrapolare dati da una tabella

Postdi papinoso » 19/10/10 12:40

Salve a tutti, il mio quesito per la maggior parte di voi sarà elementare ma per me, per quanto ci abbia provato, sembra essere insormontabile.
In pratica ho una tabella con dei numeri progressivi nella colonna A e degli anni nella colonna B. Vorrei sapere come impostare una funzione o una macro per fare si che i numeri corrispondenti ad ogni anno possano essere racchiusi in un secondo elenco possibilmente in un diverso foglio di lavoro. Quindi partendo da un elenco in cui ci sono solamente anni e numeri creare un foglio per ogni anno presente nella tabella ed all'interno del foglio inserire i soli numeri riferiti a quell'anno
ES
A B
1 2010
4 2010
6 2009
12 2008
1 2004
Applicando la macro ottenere un foglio per il 2010 con i numeri 1 4, un foglio per il 2009 con il numero 6 etc...
Spero di essere stato chiaro e Vi ringrazio sin da adesso.
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Sponsor
 

Re: [Excel] estrapolare dati da una tabella

Postdi Anthony47 » 19/10/10 13:29

Abbiamo appena discusso di un caso molto simile, vedi viewtopic.php?f=26&t=88540
Partendo da un elenco di Valori /Nominativi disordinato si estrae un elenco di Valori /singolo nominativo.

Prima di proporre altro vorrei che provassi quanto li' suggerito e verificassi se puo' essere sufficiente anche per te.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 20/10/10 07:25

Grazie ma la mia problematica è un pò diversa, nel senso che io dovrei ottenere un semplice elenco per anno, in un foglio diverso del file, all'interno del quale vengano racchiusi, preferibilmente in ordine crescente, i vari numeri di quell'anno. L'esempio che mi hai consigliato di utilizzare non credo rispecchi le mie necessità.
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 20/10/10 09:41

Ciao,

premesso che di norma sono contrario alla soluzione chiavi in mano (chi la riceve RISOLVE ma NON impara nulla) e quindi cerco di fare in modo che gli utenti arrivino al risultato passo passo fornendo loro le informazioni per iniziare, procedere ed arrivare alla fine.

Se i hai conoscenze di VBA potresti
1. ordinare per colonna "B" e poi per colonna "A"
2. utilizzare un ciclo for/next che scorra i dati e crea un nuovo foglio per ogni anno (diverso) della colonna "B"
3. rinomina il foglio con l'anno della cella i-esima
4. scrive in questo nuovo foglio tutti i dati dello stesso anno
5. ciclare fino alla fine dei dati del "Foglio1"

Questo è lo schema di base
Quanto sei in grado di fare da solo???

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 20/10/10 10:48

ricky53 ha scritto:Ciao,

premesso che di norma sono contrario alla soluzione chiavi in mano (chi la riceve RISOLVE ma NON impara nulla) e quindi cerco di fare in modo che gli utenti arrivino al risultato passo passo fornendo loro le informazioni per iniziare, procedere ed arrivare alla fine.

Se i hai conoscenze di VBA potresti
1. ordinare per colonna "B" e poi per colonna "A"
2. utilizzare un ciclo for/next che scorra i dati e crea un nuovo foglio per ogni anno (diverso) della colonna "B"
3. rinomina il foglio con l'anno della cella i-esima
4. scrive in questo nuovo foglio tutti i dati dello stesso anno
5. ciclare fino alla fine dei dati del "Foglio1"

Questo è lo schema di base
Quanto sei in grado di fare da solo???

Ciao da Ricky53

di quello che hai scritto tu più o meno credo di riuscire ad aprire il file excel, il VBA è per me un pianeta sconosciuto, mi piacerebbe imparare quindi se hai dei consigli da seguire lo farò volentieri ma purtroppo in questo momento di questi 5 passaggi non saprei farne neanche uno. Grazie
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 20/10/10 12:42

Ciao,
avevo già fatto la premessa sulla soluzione chiavi in mano e, con quanto hai scritto, come soluzione vedo solo quella di fornirti una macro sulla quale lavorare ed analizzare le funzioni che realizza, ti commento qualcosa direttamente nella macro.

Passi da fare:
1. aprire un nuovo file xls
2. copiare i tuoi dati nel foglio1
3. aprire l'editor del VB con "Alt+F11"
4. posizionarsi su VBAProject
5. tasto destro, inserisci, modulo
6. nel Modulo appena inserito copiare la macro
7. con “F5” esegui tutta la macro, con “F8” esegui la macro istruzione per istruzione
8. puoi associare la macro ad un “Pulsante”
o
ad una combinazione di tasti Ctrl+Shift+ “Scegli un tasto”

Codice: Seleziona tutto
 Option Explicit
Public RR As Integer, I As Integer, J As Integer, Sh As Worksheet, Nome_Foglio As String

Sub Elabora_Dati_su_più_Fogli()
' ATTENZIONE: la macro cancella tutti i fogli presenti nel file XLS Attivo
' I dati sono nel "Foglio1"
'      e partono dalla riga "2"  colonne "A"  e  "B"
   
    Application.ScreenUpdating = False
   
' Vengono cancellati tutti i fogli presenti nel file tranne "Foglio1"
    Application.DisplayAlerts = False
    For Each Sh In Worksheets
        If UCase(Sh.Name) <> "FOGLIO1" Then
            Sh.Delete
            I = I + 1
        End If
    Next Sh
    Application.DisplayAlerts = True
   
    Foglio1.Select
   
' Ordinamento dei dati per colonna "B" e poi per colonna "A" (Ascendente)
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal

' Elabora i dati e crea un nuovo foglio con il nome delle celle in colonna "B"
    RR = Range("A" & Rows.Count).End(xlUp).Row
    Nome_Foglio = ""
    J = 2
    For I = 2 To RR
        If Foglio1.Cells(I, 2) <> Nome_Foglio Then
            Sheets.Add
            Sheets(1).Name = Foglio1.Cells(I, 2)
            Nome_Foglio = Foglio1.Cells(I, 2)
            Sheets(Nome_Foglio).Cells(1, 1) = Foglio1.Cells(1, 1)
            J = 2
        End If
        Sheets(Nome_Foglio).Cells(J, 1) = Foglio1.Cells(I, 1)
        J = J + 1
    Next I
    [A1].Select
    Application.ScreenUpdating = False

    MsgBox "Elaborazione Effettuata:   '" & J & "'   fogli inseriti"
End Sub



PROVA e ….

Ovviamente andrà adattata e personalizzata in base alle effettive e globali esigenze di tutto il tuo progetto.

Quello che ti occorre non penso sai solo quello che hai scritto ed i dati saranno anche in altre colonne … ma questo poi sarà tuo … compito e tuo … divertimento intervenire.


Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 21/10/10 06:50

Ciao Ricky grazie ma ho seguito i tuoi passaggi e mi si apre un menu di "vai a" e non succede niente. Come mai?
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 21/10/10 06:57

Ciao,
dopo aver copiato la macro nel modulo non devi andare nel "Foglio1" ma devi rimanere nell'editoe del VB e qui con "F5" esegui la macro.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 21/10/10 07:31

bene ho provato ma mi da un errore di run time 1004
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 21/10/10 07:43

iao,
se non dici su quale istruzione.
Sei sicuro di aver seguito i passi esattamente come li ho scritti.

Quanto da me scritto vale per Office 2003.

Vedo di prepararti un file di esempio così provi la macro che ho scritto.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 21/10/10 07:47

l'errore l'ho pure salvato e volevo mandartelo ma non so come allegare una foto al messaggio. metodo delete dell'oggetto _workshhet non riuscito
Se vuoi ti mando il mio file così è più chiaro.
Il mio problema è che veramente vorrei imparare ma in questo momento mi serve una statistica di questi fascicoli e se non riesco a trovare una scorciatoia mi tocca farla tutta a mano e cosa ancora più fastidiosa aggiornarla sempre a mano. sono circa 3500 record
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 21/10/10 08:00

Ciao,
per inviare un file utilizza un

Servizio di File Hosting Free

ed invia il link che il servizio ti restituisce.



Ecco il mio ESEMPIO

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 21/10/10 08:10

l'esempio è perfetto, in pratica rispecchia esattamente quello che volevo, l'unica cosa che vorrei si potesse evitare è quella di cancellare completamente il primo foglio perchè essendo che questi dati saranno sempre in evoluzione mi serve come base di inserimento.
Ti mando il file mio e dimmi che ne pensi
http://www.megaupload.com/?d=9NKXDG9E
Poi se puoi consigliarmi come cominciare a capire il VBA ti ringrazio doppiamente, mi piacerebbe molto essere autonomo e magari aiutare qualcun altro come fai tu
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 21/10/10 08:19

Ciao,
un foglio rimane sempre ed è quello con nome "Foglio1" (vai nel VB editor e controlla)

più tardi guardo il tuo file.


Per il VBA: sei sai programmare è facile iniziare, ti basta la guida in linea e ... tanta buona volontà.

Se non sai programmare devi cominciare con il registratore di macro e sempre la guida e ... prove tante prove.

Testi: Uhm io sono sempre stato dubbioso sulla loro utilità ma ... comunque non saprei quale consigliarti ... prova con google

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 21/10/10 10:30

Ciao,
ho scaricato il file.
Ti faccio subito una domanda:

quale obiettivo devi effettivamente raggiungere ?

Tu hai posto un quesito ed avevi in mente un modo di operare ma guardando i dati penso che una semplice PIVOT ti potrebbe risolvere il problema senza mettere di mezzo una macro più o meno complessa.
Ho visto che avevi già iniziato con le pivot ... quindi, a mio avviso, sarebbe meglio se tu esponessi le tue effettive esigenze ELABORATIVE ed insieme (al forum) si troverà sicuramente una soluzione.

Ciao da Ricky53.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 21/10/10 11:10

Ciao,
in attesa delle tue informazioni ho adattato la macro alla struttura del tuo file.

Codice: Seleziona tutto
Option Explicit
Public RR As Integer, I As Integer, J As Integer, K As Integer, Sh As Worksheet, Nome_Foglio As String

Sub Elabora_Dati_su_più_Fogli()
' ATTENZIONE: la macro cancella tutti i fogli presenti nel file XLS Attivo
' I dati sono nel "Foglio2" (con nome "BASE DATI")
'      e partono dalla riga "2"  colonne "A"  e  "B"
   
    Application.ScreenUpdating = False
   
' Vengono cancellati tutti i fogli presenti nel file tranne "Foglio1" (con nome "TOTALE") e "Foglio2" (con nome "BASE DATI")
    Application.DisplayAlerts = False
    For Each Sh In Worksheets
        If UCase(Sh.Name) <> "TOTALE" And UCase(Sh.Name) <> "BASE DATI" Then
            Sh.Delete
            I = I + 1
        End If
    Next Sh
    Application.DisplayAlerts = True
   
    Foglio2.Select
   
' Ordinamento dei dati per colonna "B" e poi per colonna "A" (Ascendente)
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal

' Elabora i dati e crea un nuovo foglio con il nome delle celle in colonna "B"
    RR = Range("A" & Rows.Count).End(xlUp).Row
    Nome_Foglio = ""
    J = 2
    K = 0
    For I = 2 To RR
        If UCase(Foglio2.Cells(I, 2)) <> UCase(Nome_Foglio) Then
'            Sheets.Add
            Sheets.Add before:=Worksheets(1)
            K = K + 1
            Sheets(1).Name = Foglio2.Cells(I, 2)
            Nome_Foglio = Foglio2.Cells(I, 2)
            Sheets(Nome_Foglio).Cells(1, 1) = Foglio2.Cells(1, 1)
            J = 2
        End If
        Sheets(Nome_Foglio).Cells(J, 1) = Foglio2.Cells(I, 1)
        J = J + 1
    Next I
    Foglio2.Select
    [A1].Select
    Application.ScreenUpdating = False

    MsgBox "Elaborazione Effettuata:   '" & K & "'   fogli inseriti"
End Sub


Prova e, comunque, invia le informazioni del mio precedente intervento e, magari, risolviamo in un modo più semplice.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 21/10/10 11:26

la vera esigenza è quella di utilizzare i record inseriti per potere estrapolare un elenco diviso per tipologia (MOB, IMM, PT) e all'interno di ogni tipologia divisi per anno ed all'interno di ogni anno divisi per numero. Questo elenco dovrebbe essere autoaggiornante a seguito dell'inserimento di nuovi record e i dati dovrebbero essere distribuiti possibilmente in diversi fogli di lavoro. Come vedi io nella tabella pivot che ho creato sono riuscito a fare questa distinzione ma non so come fare perchè questi dati si distribuiscano in diversi fogli di lavoro. Poi se si riuscisse ad ottenere anche la distribuzione dei dati in linea orizzontale e non verticale sarebbe il non plus ultra.
Questo è quello che devo raggiungere entro domani mattina.
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Re: [Excel] estrapolare dati da una tabella

Postdi ricky53 » 21/10/10 11:35

Ciao,
perchè i dati devono stare in fogli distinti?
In questo modo si perdono le informazioni/funzionalità che ottieni con una pivot.

Ti ho inviato un MP con una domanda che riporto qui:

è normale ed è voluto che per
lo stesso anno e tipo
esistano due numeri UGUALI ???


- - - - -
Solo per informazione altrimenti potresti dirmi di non chiedere troppo sui dati ed il resto:
il mio scopo è agevolare il tuo obiettivo ma devo capire cosa ti occorre realmente per poter
proporre una SOLUZIONE EFFICACE
e
non proporti SOLAMENTE la soluzione a quanto hai chiesto.
- - - - -
Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] estrapolare dati da una tabella

Postdi Anthony47 » 21/10/10 11:50

Alle considerazioni di Ricky (vedi sopra) aggiungo la domanda: ma quindi vuoi un foglio per ogni "tipo" o un foglio per ogni "anno"?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] estrapolare dati da una tabella

Postdi papinoso » 21/10/10 12:07

allora....se ci sono 2 numeri uguali per stesso tipo ed anno è possibile che ci sia stato un errore in fase di trascrizione e comunque i duplicati si possono rimuovere
i fogli devono essere divisi in quanto dovranno essere stampati ed utilizzati in posti diversi a secondo dell'anno con questo vengo alla domanda di Anthony e rispondo che la divisione dovrebbe essere fatta per anno però sarebbe utile che all'interno dell'anno si possa in qualche maniera distinguere i fascicoli delle diverse tipologie o addirittura fare dei fogli diversi per anno uguale e tipo diverso
papinoso
Newbie
 
Post: 9
Iscritto il: 19/10/10 10:07

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] estrapolare dati da una tabella":


Chi c’è in linea

Visitano il forum: raimea e 60 ospiti