Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Estrapolare 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

Estrapolare dati

Postdi diego.brero » 15/10/12 12:01

ciao a tutti, dovrei estrappolare da colonne diverse un dato che si trova in una cella del foglio e copiare la riga nel Foglio2
Es:
Foglio1
data b1:d10
Cantiere c1:c10
ore d1:d10
Cantiere e1:e10
ore f1:f10

cella comando
Cantiere k1

Suf Foglio2 devo riportare solo i cantieri che soddisfano la cella k1
Foglio2
Data a1:a10
Cantiere b1:b10
ore c1:c10
Cantiere d1:d10
ore e1:e10

Spero di essere stato chiaro
ciao e grazie
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Sponsor
 

Re: Estrapolare dati

Postdi Flash30005 » 15/10/12 12:28

Ciao Diego.Brero e benvenuto nel Forum

solo un'informazione
la prima riga la usi come testata o ci sono già i dati?
es.:
in A1 del foglio1 c'è scritto "Data" oppure una data (15/10/2012)?
e deve soddisfare la condizione di cantiere su ambedue le colonne (B e D) oppure solo su una delle due, in quest'ultimo caso, quale?

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 15/10/12 12:52

in a1 c'è scritto DATA, mentre per quanto riguarda le colonne B e D deve soddisfare entrambe le colonne in quanto sono le presenze degli operai in quel cantiere e quindi devo sapere quante ore lavoro devo addebitare.
ciao e grazie
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrappolare dati

Postdi Flash30005 » 15/10/12 12:56

Ok allora prova questa macro
Codice: Seleziona tutto
Sub copiaDati()
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
Ws2.Range("A2:E100").ClearContents
CantiereM = UCase(Ws1.[K1])
UR1 = Ws1.Range("B" & Rows.Count).End(xlUp).Row
For RR1 = 2 To UR1
    CantiereA = UCase(Ws1.Range("C" & RR1).Value)
    CantiereB = UCase(Ws1.Range("E" & RR1).Value)
    If CantiereA = CantiereM And CantiereB = CantiereM Then  '<<<<< vedi nota
        UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
        Ws1.Range(Ws1.Cells(RR1, 2), Ws1.Cells(RR1, 6)).Copy Destination:=Ws2.Range("A" & UR2)
      End If
Next RR1
End Sub


Cambia in Or la condizione evidenziata
Codice: Seleziona tutto
If CantiereA = CantiereM Or CantiereB = CantiereM Then

se va bene sia l'uno che l'altro cantiere e non tutti e due insieme
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 15/10/12 17:22

Funziona meglio con la condizione OR, in quanto se solo 1 dei 2 operai ha lavorato nel cantiere mi copia la riga.

E' però possibile fagli copiare solo l'operaio che soddisfa la condizione?

Grazie ancora
ciao
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi diego.brero » 15/10/12 17:58

Per meglio spiegarmi ti vorrei allegare il file delle ore che devo controllare, ma non so come fare.
Ciao
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi Flash30005 » 15/10/12 18:53

Certo che si può fare!
Ma non sapendo quale colonna occupa l'operaio non saprei dove far riferimento quindi è opportuno l'invio del file
Per l'invio segui questa procedura
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=80395

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 15/10/12 22:08

Allego il file, come vedrai è un po più complesso in quanto vi sono più operai,
e la cella che prima ho defito K1, sarebbe meglio inserirla nel foglio2 in A1 e le righe estrappolate farle paartire da
da A2 in poi.

https://rapidshare.com/files/2869698587/Ore 2012.xls

ciao e grazie per il grandissimo aiuto
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi Flash30005 » 15/10/12 22:35

Il link è errato

usa questo server
poi copi per intero il link che ti fornisce e lo incolli nel prossimo post
(se usi il Tag URL dell'editor è meglio)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 16/10/12 05:23

diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi Flash30005 » 16/10/12 08:48

Si ok l'ho scaricato ma il nome del cantiere non lo vedo e la struttura è completamente diversa da come richiesto
Cosa ci deve andare in A1 del foglio2, l'operaio o il cantiere?

Potresti spiegare meglio questa nuova situazione?

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 16/10/12 08:59

Allora, questa è. La situazione reale che mi ritrovo,
Quindi nel foglio 1 ho tutte le ore dei ragazzi e per ogni operaio ho una colonna al quale fa riferimento un cantiere,
Se la cella cantiere è vuota significa che devo addebitare l'eventuale costo delle ore a spese generali, mentre se trovo un numero
Addebito il costo al cantiere; le altre sigle che vedi sono descrizioni per le assenze.
Nel foglio 2
Volevo inserire nella cella a1 il nr del cantiere e subito sotto farmi uscire in ordine di data tutti gli operai. Che hanno lavorato su quel cantiere.
È. Un po complicato perché. Adatto alla nostra situazione particolare.

Ieri volevo solo capire come impostare la macro e poi avrei provato io a adattarla alla situazione.

Ciao
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi Flash30005 » 16/10/12 10:15

Ma il nome del cantiere dov'è?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 16/10/12 10:51

Il nome del cantiere es: Rifacimento Piazza San Giovanni Battista
non lo trovi, per me il nome del cantiere è il nr. che trovi nelle colonne a fianco delle Hore e più precisamente:
Colonna B per operaio 1
Colonna D per operaio 2
Colonna F per operaio 3
Colonna H per operaio 4
Colonna J per operaio 5
Colonna L per operaio 6
colonna N per operaio 7
colonna Pper operaio 8
colonna R per operaio 9
Colonna T per operaio 10
colonna V per operaio 11

ciao
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi Flash30005 » 16/10/12 11:43

Preparazione Foglio2
Nella cella A1 inserisci 1
nella cella A2 inserisci 2
e copia la sequenza fino alla riga 50 (elenco cantieri)
Nella cella B1 fai una convalida di questo elenco

Macro1
In un modulo inserisci questa macro
Codice: Seleziona tutto
Sub CopiaDatiSe()
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
Cantiere = Ws2.Range("B1").Value
Ws2.Range("C1:IV1000").Clear
UC1 = Ws1.Cells(1, Columns.Count).End(xlToLeft).Column
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For CC1 = 2 To UC1 Step 2
passo = 0
    For RR1 = 3 To UR1
        If Ws1.Cells(RR1, CC1).Value = Cantiere Then
            UC2 = CC1 + 1
            If passo = 0 Then
                Ws1.Range(Ws1.Cells(1, CC1), Ws1.Cells(2, CC1 + 1)).Copy Destination:=Ws2.Cells(1, UC2)
                passo = 1
            End If
            UR2 = Ws2.Cells(Rows.Count, UC2).End(xlUp).Row + 1
            Ws1.Range(Ws1.Cells(RR1, CC1), Ws1.Cells(RR1, CC1 + 1)).Copy Destination:=Ws2.Cells(UR2, UC2)
        End If
    Next RR1
Next CC1
UC2 = Ws2.Cells(1, Columns.Count).End(xlToLeft).Column
For CC2 = UC2 To 3 Step -1
If Ws2.Cells(2, CC2).Value = "" Then Columns(CC2).Delete
Next CC2
End Sub


E nel vba del foglio2 inserisci questo codice (macro2)
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub
CopiaDatiSe
End Sub


Ora ad ogni variazione del valore in B1 del Foglio2 avrai l'elenco degli operai che hanno lavorato in quel cantiere con le rispettive ore

Allego il file per maggior chiarezza di quanto esposto.



Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 16/10/12 12:02

Grazie mille dell'aiuto Flash3005
volevo solo sapere se i cantieri dovessero diventare più numerosi di 50 l'elenco in colonna A Foglio2 deve proseguire fino al nr dell'ultimo cantire?

E se non ti creo troppi casini è possibile a Foglio2 aggiungere anche la colonna DATA all'inizio della sequenza degli operai?

ciao e ancora grazie :lol: :lol: :lol:
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi Flash30005 » 16/10/12 12:11

Puoi aumentare il numero di cantieri ma devi modificare la convalida e adattarla al nuovo elenco
La cosa migliore sarebbe creare una macro che aggiorni i cantieri (anche perché ci sono numeri cantiere mancanti) e l'elenco dovrebbe rispettare solo le presenze e creare anche un elenco dinamico (si adatta al numero di righe esistenti in colonna A)

Per quanto riguarda la data, invece, avremmo un problema perché ad ogni operaio andrebbe aggiunta la data, avremmo, quindi, una colonna in più per persona e la macro creata per soddisfare l'esigenza esposta dovrebbe essere notevolmente modificata.

ciao


EDIT ore 22:30 - Ho corretto il titolo del Topic da: "Estrappolare dati" in "Estrapolare dati"
Almeno nei titoli dei topic, cercate di non fare errori grammaticali o di battitura perché ciò rende più difficle una eventuale ricerca da parte di altri utenti.
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Estrapolare dati

Postdi diego.brero » 18/10/12 12:16

Ciao Flash30005, ti ringrazio per l'aiuto, ma il mio capo vuole a tutti i costi che gli stampi le ore cantiere come nel Foglio3
dell'allegato, ho provato a modificare il tuo ma "troppo complicato" per me.
Mi riesci ancora ad aiutare?

grazie

PS: grazie per la correzione
diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi diego.brero » 18/10/12 12:18

diego.brero
Utente Junior
 
Post: 23
Iscritto il: 15/10/12 11:31

Re: Estrapolare dati

Postdi Flash30005 » 18/10/12 13:32

Come lo vuole il tuo capo lascerebbe dei buchi nelle date avendo una sola colonna data
Non dico che non si può fare ma prima dai uno sguardo a questo file
nel quale ho inserito anche l'aggiornamento cantieri e in B1 avrai solo i cantieri presenti nella tabella (e non tutti i numeri da 1 a 50) ;)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Estrapolare dati":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti