Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Estrazione dati in una tabella di riepilogo

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] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 14/07/09 12:04

Ciao a tutti, rieccomi per chiedere di nuovo aiuto, premetto che sicuramente il progetto è impostato male, in quanto pian piano mi hanno fatto delle nuove richieste ed ho adattato i fogli della gestione presenze alle richieste.
Ho una cartella excel con cui gestisco le presenze di alcuni corsi. In un foglio per corso ho inserito per tutta la durata del corso le presenze degli alunni (max 6 ore al giorno), più in basso ho le presenze dello stage (max 8 ore al giorno), e più basso ancora le presenze dei docenti. Nel riepilogo del corso di questo stesso foglio faccio il calcolo delle ore di presenza e dei giorni di presenza, questi ultimi si conteggiano se l'alunno fa almeno 3 ore. Fin quì tutto bene.
Ho la necessità di riepilogare questi dati in un foglio riepilogativo dei mesi, che ho parametrato in modo da scegliere il nome corso ed avere i dati della scheda corrispondente. Il mio problema adesso è conteggiare le giornate di presenza, Infatti per le ore, faccio riferimento al mese che corrisponde alla data e utilizzando il somma.se tutto procede bene.
Invece per quanto riguarda le giornate, devo solo contare i giorni del mese in cui l'alunno fa almeno 3 ore di presenza, e non so come fare, il conta.se non basta.
Qualcuno mi da una mano?
Allego due immagini, la prima del foglio di un corso, la seconda del foglio di riepilogo.
http://rapidshare.com/files/255678352/I ... i.zip.html
Grazie in anticipo.

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Sponsor
 

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 14/07/09 16:28

Ciao Fcudia
Vedi se ti può andar bene una macro così:
Codice: Seleziona tutto
Sub Compila()
For N = 15 To 29
For i = 8 To 163
mese = Month(Worksheets("Criminologia").Cells(13, i).Value)
CellaMese = mese * 2 - 2
If Worksheets("Criminologia").Cells(N, i).Value = "A" Then GoTo Salta
Worksheets("Riep. Corso").Cells(N, CellaMese).Value = Worksheets("Riep. Corso").Cells(N, CellaMese).Value + Worksheets("Criminologia").Cells(N, i).Value
Salta:
Next i
Next N
End Sub

Questa compila solo il corso, se ti va bene la integriamo con lo Stage

Ciao


P.S. Copia l'intero codice, poi sul foglio premi Alt+F11 e sul menu seleziona Inserisci > Modulo, all'interno incolli il codice copiato e lo esegui
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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 14/07/09 16:55

Ciao Fcudia,

Nell'attesa ho integrato anche le ore stage quindi copia l'intero codice qui riportato
genererà due macro, eseguendo la prima "Compila" verrà eseguita anche la seconda e il foglio riepilogo sarà completo
Codice: Seleziona tutto
Sub Compila()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Worksheets("Riep. Corso").Range("H15:W30").ClearContents

For N = 15 To 29
For i = 8 To 163
mese = Month(Worksheets("Criminologia").Cells(13, i).Value)
CellaMese = mese * 2 - 1
If Worksheets("Criminologia").Cells(N, i).Value = "A" Then GoTo Salta
Worksheets("Riep. Corso").Cells(N, CellaMese).Value = Worksheets("Riep. Corso").Cells(N, CellaMese).Value + Worksheets("Criminologia").Cells(N, i).Value
Salta:
Next i
Next N
Call CompilaSt
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Sub CompilaSt()
For NS = 46 To 60
For i = 8 To 67
mese = Month(Worksheets("Criminologia").Cells(44, i).Value)
CellaMese = mese * 2 - 1
If Worksheets("Criminologia").Cells(NS, i).Value = "A" Then GoTo Salta
Worksheets("Riep. Corso").Cells(NS - 31, CellaMese).Value = Worksheets("Riep. Corso").Cells(NS - 31, CellaMese).Value + Worksheets("Criminologia").Cells(NS, i).Value
Salta:
Next i
Next NS
End Sub


Fai sapere
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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Anthony47 » 14/07/09 22:54

In alternativa alla macro, si puo' usare la funzione MATR.SOMMA.PRODOTTO, dove la matrice e' rappresentata dalla formula "--(il_tuo_intervallo_date>=0,125)" (senza gli apici e comprensivo dei due "meno" iniziali); 0,125 nel linguaggio excel rappresenta 3h.
Se non ti basta lo spunto dovresti spiegare bene la struttura dei tuoi dati.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 15/07/09 13:57

Grazie Flash, grazie Anthony per le soluzioni proposte.

Flash,
la tua macro funziona benissimo, ho dovuto modificarla ed adattarla in quanto mi faceva il controllo delle ore di presenza, cosa che già facevo con la seguente formula parametrizzata:

=SE($B15="";"";SOMMA.SE(INDIRETTO($D$7&"!$"&$F$11&"$"&$G$11-2&":$IV$"&$G$11-2);MESE(H$13);INDIRETTO($D$7&"!$"&$F$11&"$"&$G$11+$A15&":$IV$"&$G$11+$A15)))

dove:
$D$7&"! è il nome del corso che scelgo da un elenco a discesa nella cella $D$7 del foglio di riepilogo;
$"&$F$11 è la colonna di partenza che trovo nella cella $F$11;
$G$11-2 fino a fine foglio $IV$"&$G$11-2 è la riga, nel foglio del corso, dove trovo il mese da confrontare ;
$G$11+$A15 è la riga da cui sommare le ore (per avere la riga effettiva con le ore effettive infatti sommo la cella $A15 che è l'indice dell'alunno.

La tua formula l'ho modificata così:

Codice: Seleziona tutto
Sub Compila()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Worksheets("Riep. Corso").Range("H15:H44,J15:J44,L15:L44,N15:N44,P15:P44,R15:R44,T15:T44,V15:V44").Value = 0

For N = 15 To 34
For i = 8 To 163
mese = Month(Worksheets("Criminologia").Cells(13, i).Value)
CellaMese = mese * 2 - 2
If Worksheets("Criminologia").Cells(N, i).Value = "A" Then GoTo Salta
If Worksheets("Criminologia").Cells(N, i).Value >= 3 Then Worksheets("Riep. Corso").Cells(N, CellaMese).Value = Worksheets("Riep. Corso").Cells(N, CellaMese).Value + 1
Salta:
Next i
Next N
Call CompilaSt
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Sub CompilaSt()
For NS = 46 To 60
For i = 8 To 67
mese = Month(Worksheets("Criminologia").Cells(44, i).Value)
CellaMese = mese * 2 - 2
If Worksheets("Criminologia").Cells(NS, i).Value = "A" Then GoTo Salta
If Worksheets("Criminologia").Cells(NS, i).Value >= 3 Then Worksheets("Riep. Corso").Cells(NS - 31, CellaMese).Value = Worksheets("Riep. Corso").Cells(NS - 31, CellaMese).Value + 1
Salta:
Next i
Next NS
End Sub


Facendo incrementare il valore della cella di riepilogo di 1 ogni volta che le ore di corso sono maggiori o uguali a 3.
Inoltre, visto che quando il conteggio dei giorni era uguale a 0 (ore < 3) non scriveva nulla nella cella ho impostato il valore di cancellazione a 0, anche se questa modifica mi fa impostare nel foglio di riepilogo (Riep. Corso) tutte le celle delle colonne di calcolo dei giorni a 0 anche se non ho alunni.
Se fosse possibile visualizzare lo 0 solo se esiste il nome alunno, sarebbe perfetto.

Devo ancora provare a parametrizzare la macro in modo che venga preso il nome del foglio dalla cella $D$7 del foglio "Riep. Corso", ti farò sapere ma se hai suggerimenti questi sono bene accetti.
inoltre se fosse possibile automatizzare la stessa macro ed eseguirla non appena modifico il nome corso nella cella $D$7, o non appena attivo il foglio "Riep. Corso" tutto sarebbe automatico, cioè esecuzione della macro di riepilogo e ricalcolo delle ore che il "somma.se" esegue automaticamente non appena cambio il nome del corso.


Antony,
Volevo provare anche la funzione da te suggerita, la quale semplificherebbe il tutto, ma ho guardato le istruzioni della funzione e credo serva anch'essa a fare la somma delle ore e non dei giorni in cui la presenza è >=3, per cui non sono andato oltre.

Grazie mille a tutti e due per il supporto veramente veloce e professionale che date a tutti noi su questo Forum, e a risentirci presto.

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 15/07/09 14:44

per quannto riguarda l'automatismo che controlla la cella D7 di "Riep. Corso", puoi mettere sul foglio (non modulo) questo codice
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$7" Then GoTo esci
Call Compila
esci:
End Sub

In pratica se cambia D7 viene attivata la macro "compila"
Ora però se devi fare il riepilogo corso a seconda del nome corso che si trova in D7 devi modificare la macro "Compila" mettendo la variabile Foglio es.
all'inizio della macro compila determini il foglio che sarà
FoglioCorso = Worksheets("Riep. Corso").Range("D7").value
e sostituire nella macro tutti i fogli Worksheets("Criminologia") etc etc con Worksheets(FoglioCorso) etc etc (FoglioCorso senza doppi apici)

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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 15/07/09 18:11

Grazie Flash,
la modifica funziona bene.
Ma dimmi, è possibile attivare la macro compila appena seleziono il foglio "Riep. Corso"?
Questo mi permetterebbe di aggiornare il foglio di riepilogo in automatico, appena attivo "Riep. Corso", dopo aver inserito nuovi dati presenza.
Ti chiedo questo, perchè dovendo far usare il foglio a chi gestisce i corsi, se non si ricordano di aggiornare il foglio già selezionato in $D$7 possono trasmettere dati errati.
Grazie.

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 15/07/09 18:22

Un momento
Se D7 sta in Riep. Corso (e qui determini quale foglio devi riepilogare)
Aggiornerai i dati dei vari corsi: Criminologia, Balistica, AltroCorso etc
Se ti porti su Riep. Corso e metterai l'avvio quando il foglio è attivo (ma in D7 hai un corso del quale non vuoi fare il riepilogo) la macro si avvierà appunto per un corso che non ti interessa, mentre se lasci l'avvio al variare di D7 del foglio Riep. Corso tu avrai il ripilogo del Corso voluto e del quale hai aggiornato i dati, o ho interpretato male la tua richiesta?

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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 15/07/09 20:39

Sostituendo la macro Compila con questa
Codice: Seleziona tutto
Sub Compila()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Worksheets("Riep. Corso").Range("H15:H44,J15:J44,L15:L44,N15:N44,P15:P44,R15:R44,T15:T44,V15:V44").ClearContents
Alu = Worksheets("Criminologia").Range("B43").End(xlUp).Row
For N = 15 To Alu
For i = 8 To 163
mese = Month(Worksheets("Criminologia").Cells(13, i).Value)
CellaMese = mese * 2 - 2
If Worksheets("Criminologia").Cells(N, i).Value = "A" Then GoTo Salta
If Worksheets("Criminologia").Cells(N, i).Value >= 3 Then
Worksheets("Riep. Corso").Cells(N, CellaMese).Value = Worksheets("Riep. Corso").Cells(N, CellaMese).Value + 1
Else
Worksheets("Riep. Corso").Cells(N, CellaMese).Value = Worksheets("Riep. Corso").Cells(N, CellaMese).Value + 0
End If
Salta:
Next i
Next N
Call CompilaSt
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Dovresti aver risolto anche il problema righe con 0 senza alunni

Ciao

P.S. Vedi anche mio post precedente
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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 16/07/09 11:03

Ciao Flash,
La modifica dell'ultimo post, quello delle 21.39 va quasi bene, in quanto iserisce degli 0 se nelle presenze non ci sono orari >=3, però non lo fa solamente per le righe dove ci sono alunni, bensì per le prime 20 righe (20 è il nr. max di alunni).
Quindi se nel foglio del corso, ad es. criminologia, su max 20 alunni ci sono 15 nomi di alunno, lui mette lo 0 fino alla cella 20 comunque.
Volevo provare io a modificare la macro, ma non riesco a capire cosa fa l'istruzione:
Codice: Seleziona tutto
Alu = Worksheets(FoglioCorso).Range("B43").End(xlUp).Row

ossia quel range "B43" in FoglioCorso (che è il foglio che seleziono nella cella D7) cosa fa effettivamente?

Per il post precedente, quello delle 19.22, ho la necessità di aggiornare in entrambi i casi, ossia, sia al cambio corso, sia alla selezione del foglio "Riep. Corso", in quanto, gli operatori che inseriscono ed aggiornano le presenze dei corsi, lo fanno settimanalmente per tutti i corsi, quando poi passano al foglio di riepilogo per trasmettere i dati aggiornati devono trovare nel foglio del corso già selezionato tutti i dati aggiornati, perchè se uno degli operatori dimentica di fare l'aggiornamento per quel corso, trasmetterà i dati delle ore aggiornati in automatico da somma.se, quelli dei giorni allo stato dell'ultimo aggiornamento.
Per cui ricapitolando, vorrei, se fosse possibile, lanciare la macro compila sia nel momento in cui attivo il foglio di riepilogo, sia quando, trovandomi nel foglio di riepilogo, cambio corso.
Ciao

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 16/07/09 12:56

Il codice
Codice: Seleziona tutto
Alu = Worksheets(FoglioCorso).Range("B43").End(xlUp).Row

Controlla quante righe ci sono (nel foglioCorso) iniziando dalla riga 43 (col B) a ritroso, se per esempio ci sono 18 alunni a partire dalla riga 15 (compresa) il risultato Alu è pari a 32 (14+18 = 32).
Ho messo riga 43 perché ho visto che dalla riga 44 inizia lo Stage.

fcudia ha scritto:...Quindi se nel foglio del corso, ad es. criminologia, su max 20 alunni ci sono 15 nomi di alunno, lui mette lo 0 fino alla cella 20 comunque.

A me questo non risulta, se nel foglio criminologia ci sono 15 alunni la variabile N andrà da 15 a Alu quindi a 29 che corrisponde agli alunni del foglio Criminologia e non potrà mettere gli 0 fino alla ventesima riga.

Per quanto riguarda l'attivazione della macro quando il foglio Riep. Compila è attivo è sufficiente che tu vada in Strumenti > Macro Visula Basic Editor
selezioni il foglio Riep. Corso sulla finestra di sinistra (Già troverai impostata un'altra macro relativa al controllo cella D7)
e incolli questo codice
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Call Compila
End Sub


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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 16/07/09 14:47

Flash30005 ha scritto:Il codice
Codice: Seleziona tutto
Alu = Worksheets(FoglioCorso).Range("B43").End(xlUp).Row

Controlla quante righe ci sono (nel foglioCorso) iniziando dalla riga 43 (col B) a ritroso, se per esempio ci sono 18 alunni a partire dalla riga 15 (compresa) il risultato Alu è pari a 32 (14+18 = 32).
Ho messo riga 43 perché ho visto che dalla riga 44 inizia lo Stage.

fcudia ha scritto:...Quindi se nel foglio del corso, ad es. criminologia, su max 20 alunni ci sono 15 nomi di alunno, lui mette lo 0 fino alla cella 20 comunque.

A me questo non risulta, se nel foglio criminologia ci sono 15 alunni la variabile N andrà da 15 a Alu quindi a 29 che corrisponde agli alunni del foglio Criminologia e non potrà mettere gli 0 fino alla ventesima riga.



Flash, hai ragione, il conteggio della variabile Alu funziona, ma a me da 20 in quanto il contenuto della colonna B (nomi alunni) prende i nominativi da un altro foglio e se la cella corrispondente è vuota inserisce "".
ad es. la cella B15 contiene questa formula
Codice: Seleziona tutto
=SE('Dati Corsi'!B15="";"";'Dati Corsi'!B15)

infatti se elinino la formula dalle celle senza nominativi, da B30:B34, i 5 zeri in più che mi ritrovo nel riepilogo non ci sono più.
C'è un modo per ovviare a questo inconveniente?

Ciao, e nuovamente grazie

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Anthony47 » 16/07/09 15:12

Mi intrometto per creare disturbo...
La formula Matr.Somma.Prodotto descritta qualche post fa conta i giorni con >=3h, non le ore, ma non so se con l' evolvere della discussione ha ancora un possibile utilizzo.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 16/07/09 15:24

puoi modificare la macro con 5 righe in più
Codice: Seleziona tutto
Alu = Worksheets("Criminologia").Range("B43").End(xlUp).Row   '<<<< riga esistente
Ricom:
If Worksheets("Criminologia").Range("B" & Alu).Value = "" Then
Alu = Alu - 1
GoTo Ricom
End If
For N = 15 To Alu ' <<<< riga esistente

oppure
lasciare la macro come era e cambiare il riferimento conteggio colonna
esempio H43 o M43 (invece di B43) dove i dati sono sicuramente digitati e non hanno formule nascoste

Vedi tu quale è più adatta, tieni presente che anche le formule di Anthony sono molto valide e molto più veloci dell'esecuzione di una macro

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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 16/07/09 16:08

Grazie Flash,
ho preferito lasciare la macro com'era e far riferimento alla colonna H, credo sia più veloce, in quanto c'è meno codice da eseguire.
Adesso funziona tutto bene, farò un pò di test di verifica, ma credo sia tutto a posto.

Anthony
Scusa se non ho provato prima la tua formula, non hai risposto e pensavo non si potesse fare con la funzione da te proposta.
Ma non tutto viene per nuocere, in questo modo ho acquisito informazioni preziosissime sull'uso delle macro.
Ho fatto alcune prove con MATR.SOMMA.PRODOTTO come da te suggerito, ma il risultato è sempre 0, e questo sicuramente perchè non riesco ad impostare i parametri.
la formula che ho provato è:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(Criminologia!H13:FH13;Criminologia!H15:FH15>=3)

dove :
Criminologia!H13:FH13 è l'intervallo di date e
Criminologia!H15:FH15>=3 è l'intervallo dove ci sono i valori (ho confrontato il tutto con 3 perche le celle sono formattate come dati numerici)
Il risultato è sempre 0, mi dici dove sbaglio?

grazie a tutti e due, il vostro contributo è sempre prezioso.

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 16/07/09 16:11

x Anthony

P.S. nessun disturbo, anzi Grazie mille per i contributi che servono ad acquisire nuove conoscienze.

Ciao

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Flash30005 » 16/07/09 16:38

fcudia ha scritto:ho preferito lasciare la macro com'era e far riferimento alla colonna H, credo sia più veloce, in quanto c'è meno codice da eseguire.
Adesso funziona tutto bene, farò un pò di test di verifica, ma credo sia tutto a posto.


Ok, non ti devi preoccupare della velocità (si parla di frazioni di secondo) ma dell'affidabilità, non so nel caso l'ultimo alunno non fa ore se venga digitato 0 (zero) o nulla perchè con zero quel codice funziona ma se in H29 (ultimo alunno della lista) non si digita nulla la macro escluderà quell'alunno per tutto il corso.
Poi notavo una cosa:
nella mia prima macro c'era il conteggio delle ore mentre quella modificata da te non c'è più questo conteggio se vuoi ripristinarlo... ti invio la macro completa
Codice: Seleziona tutto
Sub Compila()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Worksheets("Riep. Corso").Range("H15:W43").ClearContents
'Worksheets("Riep. Corso").Range("H15:H44,J15:J44,L15:L44,N15:N44,P15:P44,R15:R44,T15:T44,V15:V44").ClearContents
Alu = Worksheets("Criminologia").Range("B43").End(xlUp).Row
Ricom:
If Worksheets("Criminologia").Range("B" & Alu).Value = "" Then
Alu = Alu - 1
GoTo Ricom
End If
For N = 15 To Alu
For i = 8 To 163
mese = Month(Worksheets("Criminologia").Cells(13, i).Value)
CellaMese = mese * 2 - 2
If Worksheets("Criminologia").Cells(N, i).Value = "A" Then GoTo Salta
If Worksheets("Criminologia").Cells(N, i).Value >= 3 Then
Worksheets("Riep. Corso").Cells(N, CellaMese).Value = Worksheets("Riep. Corso").Cells(N, CellaMese).Value + 1
Else
Worksheets("Riep. Corso").Cells(N, CellaMese).Value = Worksheets("Riep. Corso").Cells(N, CellaMese).Value + 0
End If
Worksheets("Riep. Corso").Cells(N, CellaMese + 1).Value = Worksheets("Riep. Corso").Cells(N, CellaMese + 1).Value + Worksheets("Criminologia").Cells(N, i).Value

Salta:
Next i
Next N
Call CompilaSt
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Sub CompilaSt()
For NS = 46 To 60
For i = 8 To 67
mese = Month(Worksheets("Criminologia").Cells(44, i).Value)
CellaMese = mese * 2 - 2
If Worksheets("Criminologia").Cells(NS, i).Value = "A" Then GoTo Salta
If Worksheets("Criminologia").Cells(NS, i).Value >= 3 Then Worksheets("Riep. Corso").Cells(NS - 31, CellaMese).Value = Worksheets("Riep. Corso").Cells(NS - 31, CellaMese).Value + 1
Worksheets("Riep. Corso").Cells(NS - 31, CellaMese + 1).Value = Worksheets("Riep. Corso").Cells(NS - 31, CellaMese + 1).Value + Worksheets("Criminologia").Cells(NS, i).Value
Salta:
Next i
Next NS
End Sub

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: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Anthony47 » 16/07/09 16:49

Prova
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(Criminologia!H15:FH15>=3))

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi fcudia » 16/07/09 17:11

Grazie Anthony,
soluzione velocisima, mi trova il totale delle giornate.
Adesso devo parametrarla ed adattarla per estrarre le giornate con ore >=3 di ogni mese.
hai suggerimenti?
grazie

P.S. sconoscevo l'esistenza dei segni --( ), che significato hanno?

Ciao

Fabrizio
fcudia
Utente Junior
 
Post: 37
Iscritto il: 20/06/09 14:53

Re: [EXCEL] Estrazione dati in una tabella di riepilogo

Postdi Anthony47 » 17/07/09 00:53

Qualcosa come
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(Criminologia!H15:FH15>=3);--(MESE(Criminologia!H16:FH16)=4))
Il "4" nella seconda matrice significa "Aprile", e ho immaginato che la data sia in riga 16; adatta ai tuoi dati.
Se ti serve anche l' anno, aggiungi una terza matrice sullo stile della seconda.
Il doppio "meno" serve per convertire i Vero/Falso ottenuti dal confronto in 1/0 piu' utili ai fini del calcolo da eseguire.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Estrazione dati in una tabella di riepilogo":


Chi c’è in linea

Visitano il forum: Bing [Bot], Marius44 e 22 ospiti