Condividi:        

Creare subset di dati

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

Creare subset di dati

Postdi JOHNNYC » 06/07/10 12:10

Ciao a tutti, mi sono iscritto oggi e chiedo un aiuto. Dato un foglio excell con n righe, nella colonna A ho il campo valore chiave (che potrebbe ripetersi in più righe) e nelle colonne successive una serie di valori ad esso associato. Se creo una tabella pivot per avere i totali delle singole voci della colonna A, ho la possibilità di espandere i dettagli uno alla volta creando un foglio per ogni voce. Ma dovendo gestire un centinaio di voci diverse, posso creare una macro che mi generi automaticamente un foglio per ogni voce? Esempio pratico:

Colonna A Colonna B
100 bianco
100 nero
101 verde
101 rosso

la necessità finale è creare un automatismo tale per cui venga generato un foglio per il valore 100 con tutte le righe che hanno lo stesso valore nella colonna A; un foglio per il valore 101 con tutte le righe che hanno lo stesso valore nella colonna A; e così via.

Grazie per l'aiuto.
JohnnyC
JOHNNYC
Utente Junior
 
Post: 33
Iscritto il: 06/07/10 10:59
Località: Mantova

Sponsor
 

Re: Creare subset di dati

Postdi Anthony47 » 06/07/10 14:12

Ciao johnnyc e benvenuto nel forum.
Ti sei inserito in una discussione che non c' entra nulla con la tua domanda (viewtopic.php?f=26&t=87103), quindi ho provveduto a separare il tuo messaggio in una nuova discussione; sarebbe stato meglio che avessi creato tu stesso una nuova discussione, usando il tasto "Nuovo TOPIC" seminascosto sotto la scritta Applicazioni Offic Windows (vale per la prossima volta).

Avendo un database che elenca tutti i dati io trovo pericoloso creare dei subset di questi dati; prima di dare un suggerimento su una cosa che non mi piace vorrei che spiegassi a che scopo vorresti creare tutti questi altri fogli.

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

Re: Creare subset di dati

Postdi JOHNNYC » 08/07/10 14:30

Ciao Anthony, innanzitutto grazie per il chiarimento tecnico. La necessità di creare "n" subset nasce dal fatto che i dati riepilogativi che mi vengono inviati, devo lavorarli e suddividerli per strutture di apparteneza inviando i dati ad ogni struttura in modo separato (ognuno deve vedere i suoi). Avendo già una macro che mi crea "n" files per ogni subset, mi manca il passaggio precedente. Spero di essere stato sufficientemente chiaro.
JOHNNYC
Utente Junior
 
Post: 33
Iscritto il: 06/07/10 10:59
Località: Mantova

Re: Creare subset di dati

Postdi Anthony47 » 08/07/10 22:52

Allora procedi alla registrazione di una nuova macro mentre:
-sul foglio di partenza crea un elenco unico di valori di col A, usando Filtro Avanzato, mettendolo ad esempio da M1 in giu'
-imposti il filtro automatico sulla colonna A
-scegli nella casella di filtro un valore a caso, diciamo 100
-selezioni e copi le colonne che ti servono
-inserisci un nuovo foglio di lavoro
-cambia il nome del foglio in Foglio100
-seleziona A1 e fai incolla (oppure Incolla speciale /Valori, o Valori e poi Formati)
-torna al foglio di partenza e imposta il filtro su "(tutto)"
-ferma la registrazione

A questo punto devi modificare il codice prodotto affinche':
-faccia parte di un cicclo che parte da M2 e si ripete per le celle sottostanti fintanto che il valore non sia nullo
-prenda il valore di filtro dalla cella M2 e sottostanti
-idem per il nome del foglio creato, purche' il nome dei campi non comprenda caratteri quali :/\?*[ ] e siano lunghi max 30 crt.

Se non riesci allora posta ancora inserendo il codice della macro da te registrata.

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

Re: Creare subset di dati

Postdi JOHNNYC » 09/07/10 09:22

Per testare ho utilizzato solo la colonna A e B e 4 righe di dati; questa la macro registrata:

Codice: Seleziona tutto
Sub CREA_FOGLI()
'
' CREA_FOGLI Macro
'

'
    Range("A1:B5").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("M1" _
        ), Unique:=False
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$5").AutoFilter Field:=1, Criteria1:="100"
    Columns("A:B").Select
    Selection.Copy
    Sheets("Foglio1").Select
    Sheets.Add
    Sheets("Foglio4").Select
    Sheets("Foglio4").Name = "Foglio100"
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Foglio1").Select
    ActiveSheet.Range("$A$1:$B$5").AutoFilter Field:=1
End Sub


A questo punto dovrei far partire il ciclo che si ripeta per le celle sottostanti sino al valore nullo, ma mi sono perso...

Johnny

Per favore inserisci il codice usando i tag "Code": seleziona il codice, premi Code
Anthony
JOHNNYC
Utente Junior
 
Post: 33
Iscritto il: 06/07/10 10:59
Località: Mantova

Re: Creare subset di dati

Postdi Anthony47 » 09/07/10 14:29

Ti sei perso in fretta...
Codice: Seleziona tutto
Sub CREA_FOGLI()
'
' CREA_FOGLI Macro
Dim MiaArea As String, MioFoglio As String, I As Integer
'
MioFoglio = "Foglio77"    '<<< Foglio con i dati complessivi
MiaArea = "A:A"             '<<< Colonna con la chiave di split
'
Range(MiaArea).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("M1" _
), Unique:=True

Do Until Range("M2").Offset(I, 0).Value = ""
Sheets(MioFoglio).Select
Range(MiaArea).Select
Selection.AutoFilter
ActiveSheet.Range(MiaArea).AutoFilter Field:=1, Criteria1:=Range("M2").Offset(I, 0).Value
Columns("A:B").Select
Selection.Copy
Sheets.Add
ActiveSheet.Name = Sheets(MioFoglio).Range("M2").Offset(I, 0).Value
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets(MioFoglio).Select
ActiveSheet.Range(MiaArea).AutoFilter Field:=1
I = I + 1
Loop
End Sub


Modifica se necessario le righe marcate <<<.

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

Re: Creare subset di dati

Postdi JOHNNYC » 09/07/10 15:16

che dire... semplicemente perfetta!!!!

grazie Johnny
JOHNNYC
Utente Junior
 
Post: 33
Iscritto il: 06/07/10 10:59
Località: Mantova

Re: Creare subset di dati

Postdi JOHNNYC » 12/07/10 13:13

Ciao Anthony, nel ringraziarti nuovamente per la macro avrei necessità di una piccola implementazione. Nel file che devo lavorare ho una colonna che riporta una data (che nel file originario è nel formato data). Nelle sub che la macro mi crea ho il problema che le date vengono create nel formato generale. Come posso risolvere?
Grazie ancora per l'aiuto.
JOHNNYC
Utente Junior
 
Post: 33
Iscritto il: 06/07/10 10:59
Località: Mantova

Re: Creare subset di dati

Postdi Anthony47 » 12/07/10 15:04

Dopo questa
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Inserisci anche questa
Codice: Seleziona tutto
Range("A1").PasteSpecial Paste:= xlPasteFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

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

Re: Creare subset di dati

Postdi JOHNNYC » 12/07/10 16:51

Anthony, sei un mito!!!! grazie mille.
JOHNNYC
Utente Junior
 
Post: 33
Iscritto il: 06/07/10 10:59
Località: Mantova


Torna a Applicazioni Office Windows


Topic correlati a "Creare subset di dati":


Chi c’è in linea

Visitano il forum: Ricky0185 e 50 ospiti