Condividi:        

filtro dati in excel

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

filtro dati in excel

Postdi criscolo67 » 23/06/11 14:41

Salve a tutti, ho provato a cercare in giro ma nulla quindi mi rivolgo a voi che mi avete sempre aiutato.

Ho creato un foglio di calcolo all’iinterno di una cartella di excel che riporta giornalmente una determinata indennità in numero intero che può essere zero una oppure al massimo 2, dove nella prima colonna vi è l’elenco dei dipendenti nelle successive i giorni del mese. in altro foglio dove la colonna "D" divisa ad intervalli di celle (tanti quanti sono i giorni) di ampiezza di celle per quanti sono i dipendenti, ho la necessità di creare una macro che faccia confluire nel primo intervallo i soli nomi dei dipendenti che nel giorno 1 abbiano maturato almeno una indennità (1 o 2) escludendo quindi con valore zero e cosi via per gli altri intervalli e quindi giorni. grazie
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Sponsor
 

Re: filtro dati in excel

Postdi Flash30005 » 23/06/11 21:10

Ciao Criscolo

Ho capito più o meno cosa ti occorre ma sinceramente dedico molto tempo nella risoluzione dei quesiti posti
e non vorrei perdere tempo a crearmi schemi di fogli e dati come l'interlocutore li descrive
Penso sia più opportuno che inviassi un file


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: filtro dati in excel

Postdi Anthony47 » 24/06/11 02:57

Sposo la richiesta di Flash, anche perche' io non ho capito quale e' il look della colonna "D" divisa ad intervalli di celle (tanti quanti sono i giorni) di ampiezza di celle per quanti sono i dipendenti
Quindi attendiamo un esempio di file da cui sia chiaro sia il formato dei dati di partenza che quello di output desiderabile.

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

Re: filtro dati in excel

Postdi criscolo67 » 24/06/11 21:26

:) vi invio il file, spero di aver ben collegato il tutto. ho dovuto cancellare i nomi dei dipendenti ma ne ho inseriti alcuni giuisto per capireil lavoro. grazie

https://rapidshare.com/files/1724698379/BUONI_PASTO.xls
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Flash30005 » 24/06/11 21:49

Ho visionato il file
quello che chiedi penso sia possibile
ma noto delle formattazioni già nei dati di inserimento, cosa che eviterei
perché costringe l'utente "inseritore" a rispettare una formattazione spostandosi all'interno del foglio
cosa che potrebbe essere evitata se lo schema inserimento fosse più pratico e l'output pescasse da dati, comunque inseriti, per realizzare il report che occorre

Fai sapere se è possibile cambiare la pagina inserimento dati oppure sei costretto a mantenere questo tipo di formattazione

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: filtro dati in excel

Postdi criscolo67 » 24/06/11 22:00

il foglio inserimento turni è stato creato in questo modo solo per far si che possa avere il turno di servizio e il relativo buono pasto in quanto nel foglio totale buoni dovranno confluire i soli buoni e nel foglio presenze sia il turno che il nr. di buoni. il foglio inserimento sarebbe opportuno restasse così perchè i responsabili dei reparti me lo inviano redatto ogni fine mese, cmq se necessario fornirò a loro il nuovo prospetto.
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Flash30005 » 24/06/11 22:07

In attesa di soluzioni di altri utenti
ti faccio una domanda
avete (utenti e gestori) l'utilizzo di access?

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: filtro dati in excel

Postdi criscolo67 » 25/06/11 09:39

no Flash
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Avatar3 » 27/06/11 00:36

Ciao Criscolo sto studiando anche io il tuo problema

Spiega più esausitivamente cosa vorresti ottenere
vediamo se... L'unione fa la forza! ;)

ho notato molti utenti pronti a dare delle soluzione che sembravano impossibili e, se non io, qualcun'altro sicuramente ti darà la soluzione appropriata
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: filtro dati in excel

Postdi criscolo67 » 27/06/11 08:45

a me servirebbe dal programmino che ho postato, poter far confluire nel foglio "presenze giornaliere" i soli cognomi di quei dipendenti che nel foglio "totale buoni" abbiano distintamemnte per giorno maturato almeno un buono quindi aver nella colonna corrispondente al giorno in riferimento riportato valori diversi da zero. ho provato con molte funzioni nidificando la funzione se ma non ci sono riuscito. spero di aver chiarito la problematica grazie
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Flash30005 » 27/06/11 16:00

Prova questa macro e fai sapere
Codice: Seleziona tutto
Sub CompilaPresGio()
UR = Worksheets("TOTALE BUONI").Range("C" & Rows.Count).End(xlUp).Row
For RR = UR To 6 Step -1
    Cognome = Trim(Worksheets("TOTALE BUONI").Range("D" & RR).Value)
    If Cognome = 0 Then GoTo SaltaRR
    Nome = Trim(Worksheets("TOTALE BUONI").Range("E" & RR).Value)
    For CC = 6 To 36
        Buono = Worksheets("TOTALE BUONI").Cells(RR, CC).Value
        If Buono = 0 Then GoTo saltaCC
        Giorno = CC - 5
        RRB = 38 + (Giorno - 1) * 45
        URB = Worksheets("PRESENZE GIORNALIERE").Range("H" & RRB).End(xlUp).Row
        If Worksheets("PRESENZE GIORNALIERE").Range("H" & URB).Value = "COGNOME" Then
            URB = URB + 2
        Else
            URB = URB + 1
        End If
        Worksheets("PRESENZE GIORNALIERE").Range("H" & URB).Value = Cognome
        Worksheets("PRESENZE GIORNALIERE").Range("I" & URB).Value = Nome
        Worksheets("PRESENZE GIORNALIERE").Range("K" & URB).Value = Buono
saltaCC:
    Next CC
SaltaRR:
Next RR
End Su


Spero comunque che tu realizzi eventuali macro di pulizia fogli

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: filtro dati in excel

Postdi criscolo67 » 27/06/11 17:09

allora flash, ho provato a lanciare la tua macro nella cartella, per prima cosa ho notato che nel foglio presenze giornaliere vengono riportati anche i nomi e il numero dei buoni (eliminando così le formule presenti nelle celle nomi e buoni) mentre servirebbe soltanto riportare il cognome dato che le altre celle si aggiornano automaticamente prendendo i dati dal foglio inserimento turni, quindi ho provato ad eliminare dalla tua macro "Worksheets("PRESENZE GIORNALIERE").Range("I" & URB).Value = Nome e Worksheets("PRESENZE GIORNALIERE").Range("K" & URB).Value = Buono, funziona ma in qualche giornata nel foglio presenze giornaliere , es. giorno 10 - 11 - 12 ed alcuni altri, vengono saltati alcuni dipendenti e in secondo luogo forse ho sbagliato a non dirlo prima deve essere, per ogni giorno, rispettato l'ordine dei nominativi come indicati nel foglio totale buoni in quanto sono in ordine gerarchico (se nella giornata x ci sono 6 dipendenti che hanno fruito del buono il primo e poi così via ad essere trascritto nel foglio presenze deve essere colui che nel foglio totale buoni viene prima).
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Flash30005 » 27/06/11 17:37

Credo che il problema dell'ordine gerarchico dipenda da questa riga codice
Codice: Seleziona tutto
For RR = UR To 6 Step -1

puoi sostituirla con questa
Codice: Seleziona tutto
For RR = 6 To UR


Per quanto riguarda il giorno 10, 11 e 12 mi sembra strano e controllerò ma anche tu controlla che ci sia innanzitutto il cognome del dipendente e in corrispondenza di quei giorni ci sia 1 o altro valore ma non cella vuota

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: filtro dati in excel

Postdi criscolo67 » 27/06/11 19:23

Flash ho sostituito la riga codice ma non mette tutti i cognomi in ordine , alcuni vengono saltati. cmq allego nuovamente la cartella dove ho inserito tutti i nominativi dei diependenti (sono numeri al posto dei cognomi) cosi da vedere cosa avviene lanciando la macro che mi hai inviato, infatti si vedono alcune giornate con dipendenti mancanti e l'ordine non rispettato. saluti e grazie tante per tutto. https://rapidshare.com/files/1530298883/BUONI_PASTO.xls
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Flash30005 » 27/06/11 20:32

Il problema non è della macro
ma dipende dal fatto che le tue pagine presenze non hanno un passo regolare e intendo con numero fisso
inizialmente sembrava fosse 45 ma a volte è 46 a volte meno
pertanto è opportuno che tu creassi delle pagine identiche con passo unico e adattare la macro
per il momento ho usato (passo) 46 e sembra funzionare ma con quel tipo di impaginazione potrebbe essere solo un caso
Questa è la macro
(più o meno la stessa di prima con qualche accorgimento, essendoci formule invece che valori, nelle celle scansionate)
Codice: Seleziona tutto
Sub compilapregio()
Call cancellare_presenze_giornaliere
UR = Worksheets("TOTALE BUONI").Range("B" & Rows.Count).End(xlUp).Row
For RR = 6 To UR

    Cognome = Trim(Worksheets("TOTALE BUONI").Range("D" & RR).Value)
    If Cognome = 0 Then GoTo SaltaRR
    Nome = Trim(Val(Worksheets("TOTALE BUONI").Range("E" & RR)))
    For CC = 6 To 36
        Buono = Val(Worksheets("TOTALE BUONI").Cells(RR, CC))
        If Buono = 0 Then GoTo saltaCC
        Giorno = CC - 5
        RRB = 38 + (Giorno - 1) * 46
        URB = Worksheets("PRESENZE GIORNALIERE").Range("H" & RRB).End(xlUp).Row
        If Trim(Worksheets("PRESENZE GIORNALIERE").Range("H" & URB).Value) = "COGNOME" Then
            URB = URB + 2
        Else
            URB = URB + 1
        End If
        Worksheets("PRESENZE GIORNALIERE").Range("H" & URB).Value = Cognome
       
saltaCC:
    Next CC
SaltaRR:
Next RR
Calculate
End Sub

Inoltre ho visto che hai bloccato il calcolo e se hai il foglio pieno di formule senza il "Calculate" finale potresti non ottenere i risultati voluti senza premere F9
Inoltre ho modificato la tua macro cancella "Presenze Giornaliere"
Codice: Seleziona tutto
Sub cancellare_presenze_giornaliere()

' cancellare_presenze_giornaliere Macro

    Sheets("PRESENZE GIORNALIERE").Select
    Range("H10:H37,F10:F37").ClearContents
    Range("F54:F83,H54:H83").ClearContents
    Range("F100:F128,H100:H128").ClearContents
    Range("F144:F173,H144:H173").ClearContents
    Range("F190:F218,H190:H218").ClearContents
    Range("F233:F264,H233:H264").ClearContents
    Range("F280:F309,H280:H309").ClearContents
    Range("F326:F354,H326:H354").ClearContents
    Range("F371:F400,H371:H400").ClearContents
    Range("F417:F446,H417:H446").ClearContents
    Range("F463:F492,H463:H492").ClearContents
    Range("F509:F538,H509:H538").ClearContents
    Range("F555:F584,H555:H584").ClearContents
    Range("F601:F629,H601:H629").ClearContents
    Range("F646:F674,H646:H674").ClearContents
    Range("F689:F718,H689:H718").ClearContents
    Range("F735:F764,H735:H764").ClearContents
    Range("F781:F810,H781:H810").ClearContents
    Range("F826:F855,H826:H855").ClearContents
    Range("F872:F901,H872:H901").ClearContents
    Range("F918:F949,H918:H949").ClearContents
    Range("F966:F995,H966:H995").ClearContents
    Range("F1012:F1041,H1012:H1041").ClearContents
    Range("F1058:F1087,H1058:H1087").ClearContents
    Range("F1104:F1133,H1104:H1133").ClearContents
    Range("F1150:F1179,H1150:H1179").ClearContents
    Range("F1196:F1225,H1196:H1225").ClearContents
    Range("F1242:F1271,H1242:H1271").ClearContents
    Range("F1288:F1320,H1288:H1320").ClearContents
    Range("F1337:F1366,H1337:H1366").ClearContents
    Range("F1383:F1412,H1383:H1412").ClearContents
End Sub

Che puoi realizzare anche con un unico Range separando le aree con la virgola

EDIT: N.B. un'altra cosa che eviterei è quella di ricavarsi il nome attraverso una formula in colonna I
lascerei alla macro inserire anche il nome per evitare che in caso di cognomi uguali la tua formula prenderà solo ed esclusivamente il primo nome in elenco
inoltre avendo oltre 1300 righe (quindi 1300 formule) il file sarebbe anche più "snello" senza formule
in questo caso la macro che pulisce il foglio dovra essere modificata così
(prendo solo una riga di esempio)


Codice: Seleziona tutto
    Range("F100:F128,H100:I128").ClearContents

in pratica cancelli contemporaneamente H e I
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: filtro dati in excel

Postdi criscolo67 » 27/06/11 22:25

flash ho rifatto tutti il foglio presenze avendo un passo fisso ( 50) ma sostituendo la tua macro con la precedente non funziona, riguardandola ho visto che hai inserito sicuramente nella macro "Call cancellare_presenze_giornaliere", ho calcellato questa riga e sostituito *46 con 50 ma continua a non riportare tutti i dipendenti nel giorno ove hanno il buono e in piu dopo il 3 giorno inzia nuovamente a non rispettare l'ordine. domani vedrò meglio cosa possa essere, intanto grazie nuovamente e se ritieni utile posto nuovamente la cartella con il nuovo foglio presenze.
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Flash30005 » 27/06/11 22:31

Prova questo file

non è con passo fisso ma funziona

Inoltre ti chiedo perché non crei un foglio per ogni giorno (da 1 a 31)
nei quali potrai avere in tutti la stessa formattazione
semplificheresti molto e volendo non saresti costretto a stampare tutti i 31 fogli ma solo quello di tuo interesse o anche tutti

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: filtro dati in excel

Postdi Anthony47 » 28/06/11 01:14

Non mi cimento sulla macro, visto che Flash e' gia' andato avanti (vedi messaggio sopra), quindi ti propongo una ipotesi di soluzione con formule.

Secondo me pero' non puoi fare quelle elaborazioni sul solo Cognome, ma devi usare la Matricola, che fortunatamente nel foglio TotaleBuoni e' gia' presente.
Devi metterlo anche su PresenzeGiornaliere; es lo metti in col H, mentre in col I inserirai il Cognome, cosi' che le formule Cerca.Vert useranno I invece di H.
Per usare convenientemente le formule dovrai fare alcune modifiche al layout del foglio " PRESENZE GIORNALIERE":
-inserisci in col D la data; puoi farlo inserendo in D3 la formula
Codice: Seleziona tutto
=SE(VAL.NUMERO(L2);L2;D2)
da copiare poi verso il basso.
-in B10 calcoli la riga dove in TOTALE BUONI esiste, per quella data un valore diverso da zero, con la formula
Codice: Seleziona tutto
=PICCOLO((SE(VAL.ERRORE(SCARTO('TOTALE BUONI'!$F$6;0;GIORNO(D10)-1;20;1));"";SE(SCARTO('TOTALE BUONI'!$F$6;0;GIORNO(D10)-1;20;1)>0;RIF.RIGA(F$6:F$25);"")));CONTA.SE(D$1:D10;D10)-5)
Da confermare con Contr-Maiusc-Enter (non solo Enter) e poi copiare verso il basso.
-in Col H abbiamo detto che inseriremo la Matricola, quindi cambia l' intestazione in H8, H52, etc
-in H10 calcoli la matricola con la formula
Codice: Seleziona tutto
=INDICE('TOTALE BUONI'!B:B;$B10)

-in G10 calcoli la Qualifica con la formula
Codice: Seleziona tutto
=INDICE('TOTALE BUONI'!C:C;$B10)

-l' orario oggi lo prelevi da INSERIMENTO TURNI partendo dal Cognome; se vuoi continuare a farlo (assicurandoti che mai due persone con lo stesso cognome faranno parte della vostra organizzazione) modifica leggermente la formula in J10 in
Codice: Seleziona tutto
=SE(H10="";"";CERCA.VERT(I10;'INSERIMENTO TURNI'!$B$1:$BN$126;4;FALSO))

-idem per il N° di col K, salvo che io propongo di estrarlo da foglio TOTALE BUONI con la formula
Codice: Seleziona tutto
=SCARTO(INDICE('TOTALE BUONI'!E:E;$B10);0;GIORNO(D10))

-non ho capito la colonna F
-a questo punto copia le formule di riga 10 verso il basso su tutto il giorno
-copi poi le formule di giorno 1 e le incolli su giorno 2 (selezioni F54, Contr-v), giorno 3 (selezioni F100, Contr-v), etc.
-infine selezioni tutte le colonne F:K e imposti una formattazione condizionale con la Condizione1=La formula e', come formula userai =Val.Errore(F1), come formato imposterai il colore del carattere pari al colore dello sfondo, per rendere invisibili le scritte di Errore. MA PRIMA dovrai eliminare l' unione celle su riga 1 e riga 2

Ovviamente ritengo una soluzione macro piu' logica, ma ho voluto mostrare come le funzioni di excel possono essere combinate per ottenere risultati anche complessi.

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

Re: filtro dati in excel

Postdi criscolo67 » 28/06/11 09:19

per flash, non va, se noti nei fogli il totale buoni nella cella q20 del foglio presenze non corrisponde con il totale buoni, infatti se andiamo a vedere il totale giornaliero spesso non corrisponde in quanto ad esempio il dipendente 38 ogni volta viene inserito due volte. farò sicuramente come hai cosigliato 31 fogli, e ti chiederò aiuto per la nuova macro..... grazie
Antony la colonna f si riferisce al numero identificativo del buono che andrò ad inserire manualmente al termine di tutto, serve per risalire dal buono al dipendente a cui è stato consegnato (il tutto è richiesto da circolari amministrative interne).
criscolo67
Utente Junior
 
Post: 96
Iscritto il: 13/05/11 13:50

Re: filtro dati in excel

Postdi Flash30005 » 28/06/11 09:53

In effetti il file che ti ho inviato riportava 519 contro 516
ho soltanto rielaborato la macro (anche più volte) e ottengo sempre 516

Se hai deciso per un foglio al giorno è consigliabile usare nomi fogli brevi addirittura proprio i numeri 1, 2, ... 31
Crei un modello che copierai per tutti i giorni

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-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "filtro dati in excel":


Chi c’è in linea

Visitano il forum: Nessuno e 74 ospiti