Condividi:        

estrapolazione 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

estrapolazione di dati

Postdi raffaele10 » 23/10/11 20:13

Buonasera a tutti,

avrei da risolvere quanto segue:

Nel foglio1 ho i dati suddivisi in 100 gruppi di 10 colonne.
1° gruppo comprende le colonne ( F - G-H -I-J-K-L-M-N-O )
2° gruppo comprende le colonne ( T-U-V-W-X-Y-Z-AA-AB-AC )
3° gruppo comprende le colonne (AH: AQ)
…..
100° gruppo …..

14 è il passo tra un gruppo e l’altro e tra loro ci sono 4 colonne vuote (P-Q-R-S) ……

E’possibile realizzare una macro che copi i dati contenuti nel foglio1 e li incolli dal foglio 2 al foglio 5 così come di seguito descritto:

NEL FOGLIO2 G-U-AI …..
NEL FOGLIO3 H-V –AJ…..
NEL FOGLIO4 N-AB –AP….
NEL FOGLIO5 O-AC –AQ….

Nel foglio2 verranno incollate solo le colonne 2 di ogni gruppo.
Nel foglio3 verranno incollate solo le colonne 3 di ogni gruppo.
Nel foglio4 verranno incollate solo le colonne 9 di ogni gruppo.
Nel foglio5 verranno incollate solo le colonne 10 di ogni gruppo.

Un grazie anticipato
raffaele10
Utente Junior
 
Post: 16
Iscritto il: 26/09/11 09:53

Sponsor
 

Re: estrapolazione di dati

Postdi Flash30005 » 23/10/11 21:07

Prova questa macro
semmai, poi, faremo aggiustamenti

Codice: Seleziona tutto
Sub CopiaColSuFogli()
For I = 2 To 5
    Foglio = "Foglio" & I
    Select Case I
    Case 2
        Col = 2
    Case 3
        Col = 3
    Case 4
        Col = 9
    Case 5
        Col = 10
    End Select
    For CC1 = 5 + Col To Worksheets("Foglio1").Range("G2").CurrentRegion.Columns.Count Step 14
        CC2 = Worksheets(Foglio).Range("A2").CurrentRegion.Columns.Count + 1
        Worksheets("Foglio1").Columns(CC1).Copy Destination:=Worksheets(Foglio).Columns(CC2)
    Next CC1
Next I
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: estrapolazione di dati

Postdi raffaele10 » 23/10/11 23:44

Ciao Flash,

nel provare la macro ho definito le variabili come di seguito:
Dim i As Variant, foglio As Variant, col As Variant, cc1 As Variant, cc2 As Variant

l'incollaggio dei dati avviene nel foglio2 per la sola colonna F e nel foglio3 per la sola colonna G.
la successiva pressione sul pulsante macro incolla nelle colonne adiacenti le stesse colonne F e G.

i fogli 4 e 5 rimangono vuoti.

Ciao
raffaele10
Utente Junior
 
Post: 16
Iscritto il: 26/09/11 09:53

Re: estrapolazione di dati

Postdi Anthony47 » 24/10/11 01:27

In alternativa alla macro di Flash potresti provare questa:
Codice: Seleziona tutto
Sub raffa10()
'
'Sheets.Add after:=Worksheets(Worksheets.Count), Count:=5   
Sheets("Foglio1").Select
Call Gmove(2, 2)
Call Gmove(3, 3)
Call Gmove(9, 4)
Call Gmove(10, 5)
 End Sub

Sub Gmove(quale, dove)
Dim I As Integer, J As Integer
'
Grp = 100 : stepc = 14
For I = 1 To Grp
Range("F:F").Offset(0, quale - 1 + (I - 1) * stepc).Copy _
   Destination:=Sheets("Foglio" & dove).Cells(1, I)
Next I
End Sub

I fogli Foglio2:Foglio5 devono gia' essere presenti nella cartella di lavoro.
Lancerai poi la macro raffa10

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

Re: estrapolazione di dati

Postdi Flash30005 » 24/10/11 08:45

(Leggi post di Anthony qui sopra)

Evidentemente hai delle colonne vuote
Non avendo excel 2007 e non potendo sapere quante colonne utilizzi nel foglio 1
ho pensato di usare la funzione CurrentRegion che prevede continuità di dati in tutte le colonne
se non è così
potresti cambiare due righe
invio la macro modificata
Codice: Seleziona tutto
Sub CopiaColSuFogli2()
Dim I, Col, CC1, CC2, passo As Integer
Dim Foglio As Variant
For I = 2 To 5
CC2 = 1
    Foglio = "Foglio" & I
    Select Case I
    Case 2
        Col = 2
    Case 3
        Col = 3
    Case 4
        Col = 9
    Case 5
        Col = 10
    End Select
    For CC1 = 5 + Col To Worksheets("Foglio1").Range("IV1").End(xlToLeft).Column Step 14
        Worksheets("Foglio1").Columns(CC1).Copy Destination:=Worksheets(Foglio).Columns(CC2)
        CC2 = CC2 + 1
    Next CC1
Next I
End Sub

In questa riga
Codice: Seleziona tutto
For CC1 = 5 + Col To Worksheets("Foglio1").Range("IV1").End(xlToLeft).Column Step 14

Dovrai cambiare la lettera dell'ultima tua colonna da "IV1" a "...1"
Oppure sapendo che hai 100 gruppi di 10 colonne + 4 intermedie (14*100 =1400)
puoi anche mettere quest'altra riga
Codice: Seleziona tutto
For CC1 = 5 + Col To 1405 Step 14

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: estrapolazione di dati

Postdi raffaele10 » 24/10/11 11:44

Ciao Flash e Anthony,

Prima di tutto, grazie per la vostra gentile e rapidissima risposta.

Tutte e 2 le macro funzionano.
Volevo chiederVi, per tutte e 2 le macro, se era possibile incollare i dati nei fogli destinazione a partire dalla cella K1 e non in A1 e per ultimo, non copiare tutta la colonna ma solo un range p. es: (F1:F500).

Siete veramente in gamba

Ciao
Raffaele
raffaele10
Utente Junior
 
Post: 16
Iscritto il: 26/09/11 09:53

Re: estrapolazione di dati

Postdi Flash30005 » 24/10/11 12:22

Prova questa macro modificata secondo tue ultime specifiche

Codice: Seleziona tutto
Sub CopiaColSuFogli3()
Worksheets("Foglio1").Select
Dim I, Col, CC1, CC2, passo As Integer
Dim Foglio As string
For I = 2 To 5
CC2 = 11
    Foglio = "Foglio" & I
    Select Case I
    Case 2
        Col = 2
    Case 3
        Col = 3
    Case 4
        Col = 9
    Case 5
        Col = 10
    End Select
    For CC1 = 5 + Col To Worksheets("Foglio1").Range("IV1").End(xlToLeft).Column Step 14
        Range(Cells(1, CC1), Cells(500, CC1)).Copy Destination:=Worksheets(Foglio).Cells(1, CC2)
        CC2 = CC2 + 1
    Next CC1
Next I
End Sub


Per la riga
Codice: Seleziona tutto
 For CC1 = 5 + Col To Worksheets("Foglio1").Range("IV1").End(xlToLeft).Column Step 14

modifica inserendo l'ultima lettera di colonna del tuo foglio oppure mettendo il numero colonne con dati
(come esempio da post precedente)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: estrapolazione di dati

Postdi Anthony47 » 24/10/11 15:10

Per quanto riguarda invece l' altra soluzione, nella Sub Gmove modificherai queste rige:
Codice: Seleziona tutto
Range("F1:F500").Offset(0, quale - 1 + (I - 1) * stepc).Copy _
   Destination:=Sheets("Foglio" & dove).Cells(1, I + 10)


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

Re: estrapolazione di dati

Postdi raffaele10 » 25/10/11 21:26

Ho effettuato le modifiche che mi avete indicato e tutto gira perfettamente.

Vi ringrazio ancora una volta.

Ciao
Raffaele
raffaele10
Utente Junior
 
Post: 16
Iscritto il: 26/09/11 09:53


Torna a Applicazioni Office Windows


Topic correlati a "estrapolazione di dati":


Chi c’è in linea

Visitano il forum: Nessuno e 59 ospiti