Discussione:
estrazione mese da data in VBA
(troppo vecchio per rispondere)
m***@inwind.it
2005-06-15 17:42:15 UTC
Permalink
Salve a tutti, ho bisogno di un aiuto, ho un registro non conformità su
excell, e devo estrarre tutte le non conformità di un certo ufficio in un
determinato mese, ad esempio 1, gennaio.

Ho fatto una importazione odbc dei dati, la parte di report invece è su
un'altro foglio in cui voglio avere una cosa di questo genere:

gennaio 5
febbbraio 4
etc....
Le colonne che mi interessano nel foglio importato (ODBC Registro CQ) sono
la 14, che contiene la funzione che ha fatto la Non Conformità e la 2 che
contiene la data.

Non posso modificare l'origine dei dati, quindi la funzione conta.se non
sono riuscito ad applicarla in quanto la funzione mese() è definita su una
cella, non su un range, in poche parole scritta così non và:
=CONTA.SE('ODBC Registro CQ'!N:N;E(MESE('ODBC Registro
CQ'!B:B)=1;"PRODUZIONE"))

Quindi ho pensato a VBA:

Sub contaNCUffProduz()
Sheets("ODBC Registro CQ").Select
For i = 1 To 10000
For j = 1 To 12
' manca di definire come estrarre gennaio
If Cells(i, 14).Value = "PRODUZIONE" And Cells(i, 2).Value = gennaio Then
n = n + 1
End If
Next i
'metto il risultato su un altro foglio, nella casellina gennaio
Sheets("Analisi NC").Select
Cells(j, 2).Value = n
Next j
End Sub

Non sono un esperto di vba, e il codice sopra premetto non l'ho ancora
fatto girare, prima di risolvere problemi 'minori' volevo capire l'impianto.
Il problema è trovare l'equivalente della funzione mese in VBA.
Grazie a tutti in anticipo!
Luigi
ivano
2005-06-15 18:08:09 UTC
Permalink
Post by m***@inwind.it
Salve a tutti, ho bisogno di un aiuto, ho un registro non conformità su
excell, e devo estrarre tutte le non conformità di un certo ufficio in un
determinato mese, ad esempio 1, gennaio.
Ho fatto una importazione odbc dei dati, la parte di report invece è su
gennaio 5
febbbraio 4
etc....
Le colonne che mi interessano nel foglio importato (ODBC Registro CQ) sono
la 14, che contiene la funzione che ha fatto la Non Conformità e la 2 che
contiene la data.
Non posso modificare l'origine dei dati, quindi la funzione conta.se non
sono riuscito ad applicarla in quanto la funzione mese() è definita su una
=CONTA.SE('ODBC Registro CQ'!N:N;E(MESE('ODBC Registro
CQ'!B:B)=1;"PRODUZIONE"))
Ciao,
potresti utilizzare una formula del tipo:
=MATR.SOMMA.PRODOTTO(--(MESE('ODBC Registro CQ'!B:B)=1);--('ODBC Registro
CQ'!B:B)="PRODUZIONE"))

ivano
m***@inwind.it
2005-06-16 07:52:38 UTC
Permalink
Post by ivano
Ciao,
=MATR.SOMMA.PRODOTTO(--(MESE('ODBC Registro CQ'!B:B)=1);--('ODBC Registro
CQ'!B:B)="PRODUZIONE"))
Ciao Ivano, ho dato un'occhiata alla funzione MATR.SOMMA.PRODOTTO, ma
scritta così mi sà che non funzionerebbe, dalla guida infatti risulta che
le due colonne che usi come argomenti dovrebbero avere le stesse
dimensioni, ed in gennaio ci possono essere più NC rispetto a quelle che
arrivano solo dalla produzione.
Infatti scritta così restituisce #NUM:
=MATR.SOMMA.PRODOTTO((MESE('ODBC Registro CQ'!B:B)=1);('ODBC Registro
CQ'!N:N="PRODUZIONE"))
Penso che la soluzione sia solo il VBA utilizzando la funzione Month
proposta da cucchiaino, ma sarebbe interessante trovare un escamotage solo
con le funzioni.
Luigi
Giovanna
2005-06-16 08:38:20 UTC
Permalink
Post by m***@inwind.it
Post by ivano
Ciao,
=MATR.SOMMA.PRODOTTO(--(MESE('ODBC Registro CQ'!B:B)=1);--('ODBC Registro
CQ'!B:B)="PRODUZIONE"))
Ciao Ivano, ho dato un'occhiata alla funzione MATR.SOMMA.PRODOTTO, ma
scritta così mi sà che non funzionerebbe, dalla guida infatti risulta che
le due colonne che usi come argomenti dovrebbero avere le stesse
dimensioni,
ciao,
sì, l'intervallo delle matrici deve essere uguale.
inoltre penso debba fissarlo tu e non estenderlo alla colonna intera.
Diversamente ti viene restituito #NUM!
Post by m***@inwind.it
ed in gennaio ci possono essere più NC rispetto a quelle che
arrivano solo dalla produzione.
questo, una volta fissati gli intervalli uguali, non influisce (se ti ho
capito bene)
Post by m***@inwind.it
=MATR.SOMMA.PRODOTTO((MESE('ODBC Registro CQ'!B:B)=1);('ODBC Registro
CQ'!N:N="PRODUZIONE"))
Il #NUM è determinato da ciò che ho scritto sopra...
Attenzione: Ivano ti suggeriva la formula con i due trattini -- prima delle
condizioni. Servono per trasformare in 1 e 0, i valori VERO e FALSO
rispettiv.te
Ancora una cosa: tieni conto che la formula =MESE(A1:A100)=1 restituisce
VERO anche se le celle sono vuote (Non so se nel tuo caso può essere
importante......)
E inoltre: se vuoi estendere la formula considerando anche gli altri mesi,
potresti immetterla in questo modo:
--(MESE(A1:A100)=rif.riga() [se immessa in riga1, ho scritto solo la parte
di formula interessata...]
così puoi trascinare sotto senza dover modificare tutte le volte.

vedi se va tutto...
ciao
giovanna
Maurizio Borrelli
2005-06-16 10:31:14 UTC
Permalink
[...]
Post by Giovanna
Attenzione: Ivano ti suggeriva la formula con i due trattini --
[...]

Ciao Giovanna.

Diciamo... "la formula con i due meno"? Sembra meno esoterico, cosi'.
:-D
--
Ciao :o)
Maurizio Borrelli, Microsoft MVP - Office Systems - Access
--------
?SPQR(C)
X
--------
Giovanna
2005-06-16 12:24:10 UTC
Permalink
Post by Maurizio Borrelli
[...]
Post by Giovanna
Attenzione: Ivano ti suggeriva la formula con i due trattini --
[...]
Ciao Giovanna.
Diciamo... "la formula con i due meno"? Sembra meno esoterico, cosi'.
:-D
mm.... certo.
grazie Maurizio
giovanna
m***@inwind.it
2005-06-16 10:45:35 UTC
Permalink
CUT
Post by Giovanna
rispettiv.te
Ancora una cosa: tieni conto che la formula =MESE(A1:A100)=1 restituisce
VERO anche se le celle sono vuote (Non so se nel tuo caso può essere
importante......)
E inoltre: se vuoi estendere la formula considerando anche gli altri mesi,
--(MESE(A1:A100)=rif.riga() [se immessa in riga1, ho scritto solo la parte
di formula interessata...]
così puoi trascinare sotto senza dover modificare tutte le volte.
vedi se va tutto...
ciao
giovanna
Azz... mi avete dato una cenciatina di nulla!
così funziona tutto:
=MATR.SOMMA.PRODOTTO(--(MESE('ODBC Registro
CQ'!B2:B1000)=(RIF.RIGA()-1));--('ODBC Registro CQ'!N2:N1000="PRODUZIONE"))

Complimenti a tutti, siete eccezzionali.

Luigi
ivano
2005-06-16 11:17:32 UTC
Permalink
ciao Giovanna,

mi dai lo stesso la sufficenza..?

ivano
Giovanna
2005-06-16 12:20:51 UTC
Permalink
Post by ivano
ciao Giovanna,
mi dai lo stesso la sufficenza..?
Ivano,
... ti do sberle ti do!

ciao
giovanna
ivano
2005-06-16 13:10:12 UTC
Permalink
Post by m***@inwind.it
Ivano,
... ti do sberle ti do!
Ma pensa tu, che carattere...!

ivano

cucchiaino
2005-06-15 21:41:58 UTC
Permalink
Post by m***@inwind.it
Il problema è trovare l'equivalente della funzione mese in VBA.
... and Month(Cells(i, 2).Value) = 1 then




()-- cucchiaino
m***@inwind.it
2005-06-16 07:17:49 UTC
Permalink
Post by cucchiaino
Post by m***@inwind.it
Il problema è trovare l'equivalente della funzione mese in VBA.
... and Month(Cells(i, 2).Value) = 1 then
()-- cucchiaino
Grazie ragazzi, non sapevo proprio come levarci le gambe.
Luigi
Loading...