Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Conta se con filtro e VBA

Ultimo Aggiornamento: 23/04/2017 13:54
Post: 352
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
22/04/2017 12:10

Buongiorno a tutti,
sto facendo innumerevoli tentativi e prove ma non ne vengo a campo
in allegato il foglio di lavoro

l'intenzione è quella che selezionando il mese e l'anno nelle due combobox in alto e premendo il tasto filtra
mi copiasse nel foglio stampa solo i nominativi univoci n base al filtro mese e anno e mi contasse affianco ad ogni nome il numero di pasti o cene

Ovviamente ringrazio per quasliasi contributo
Excel 2007 - 2010
Post: 1.042
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
22/04/2017 12:33

Re:
spezza il problema in 2:

primo problema:

krashone, 4/22/2017 12:10 PM:


l'intenzione è quella che selezionando il mese e l'anno nelle due combobox in alto e premendo il tasto filtra
mi copiasse nel foglio stampa solo i nominativi univoci n base al filtro mese e anno



per creare il criterio data su un filtro,
per quello che ne so, vba ha bisogno della data in formato inglese.
per ciò, concatena in momodo adeguato:
mese & giorno & anno

lascio a te il secondo problema:

krashone, 4/22/2017 12:10 PM:

mi contasse affianco ad ogni nome il numero di pasti o cene



ciao
Frank







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 352
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
22/04/2017 12:57

Grazie per i consigli
per evitare probelmi con le date ho creato altre due colonne
nel registro dove appare il mese in numero e l'anno
e per il filtro non ho probelmi particolari

è il conta se una volta filtrato che non ottengo risultati
Excel 2007 - 2010
Post: 1.043
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
22/04/2017 13:07

modifica
Sheets("Stampa").Cells(i, 6) = Application.WorksheetFunction.CountIf(Sheets("Registro").Range("E6:UR"), "X")


con
Sheets("Stampa").Cells(i, 6) = Application.WorksheetFunction.CountIf(Sheets("Registro").Range("E6:E"&UR), "X")


Ciao

[Modificato da tanimon 22/04/2017 13:10]







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 353
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
22/04/2017 13:27

Ancora non è perfetto
esce fuori per antrambi nominativi il valore 2
Excel 2007 - 2010
Post: 1.044
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
22/04/2017 13:40

prova a studiarti ed ad utilizzare la funzione COUNTIFS (CONTA.PIU'.SE)

al posto di CountIf (CONTA.SE)

Dire solamente che il risultato ottenuto non è ancora perfetto,
non è particolarmente gradevole per chi ti sta dando una mano........


Ricordo anche bene che in passato, questa cosa ti è già stata fatta notare anche da altri utenti.

Sono certo che ce la puoi fare [SM=g27811]


Ciao
Frank




[Modificato da tanimon 22/04/2017 13:40]







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 1.045
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
22/04/2017 14:01

potresti anche:

creare una variabile contatore

un If .... Then a due condizioni con un AND
all'interno di un
FOR ..... NEXT sulla colonna "E", da "E6" to UR

Fare la stessa cosa per la colonna "F"


Ciao
Frank









Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 354
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
22/04/2017 19:07

capisco
mi scuso per l'uso delle parole che assolutamente non devono essere fraintese, prima di postare aiuti provo e riprovo varie combinazioni
cerco sul web etc...
Excel 2007 - 2010
Post: 355
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
22/04/2017 20:42

Grazie a Frank che mi ha fatto conoscere Application.WorksheetFunction.CountIfs

ho modificato il codice come segue e pare che adesso funzioni

UR1 = Sheets("Stampa").Range("B11").End(xlDown).Row
For i = 11 To UR1
DoEvents
Nom = Sheets("Stampa").Cells(i, 2)
Sheets("Stampa").Cells(i, 6) = Application.WorksheetFunction.CountIfs(Sheets("Registro").Range("E6:E" & UR), "X", Sheets("Registro").Range("A6:A" & UR), Nom)
Next i

Sicuramente per voi il codice è brutto ma per le mie capacità mi devo accontentare, proseguo con il lavoro e verifico se avrò bisogno ancora del vostro indispensabile aiuto

per adesso grazie 1000
Excel 2007 - 2010
Post: 1.046
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
23/04/2017 13:54

Se vuoi imparare sii curioso come sei e non cercare risposte da chi le
ha già'.
Fatti domande e prima di scrivere un codice in vba,
scrivilo in italiano.


[SM=x423028]

Ciao
Frank
[Modificato da tanimon 23/04/2017 13:57]







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 13:09. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com