View Full Version : EXCEL cerca e conta, problema
Wertherino
01-04-2008, 13:08
Ragazii esiste una funzione di Excel che in una colonna di numeri trova e conta quanti di quei numeri soddisfano una o più condizioni? Tipo maggiore di..minore di.. etc. Grazie in anticipo
Wertherino
01-04-2008, 13:18
Ragazii esiste una funzione di Excel che in una colonna di numeri trova e conta quanti di quei numeri soddisfano una o più condizioni? Tipo maggiore di..minore di.. etc. Grazie in anticipo
Preciso, almeno due condizioni. Il COUNTIF credo non vada bene;)
Ragazii esiste una funzione di Excel che in una colonna di numeri trova e conta quanti di quei numeri soddisfano una o più condizioni? Tipo maggiore di..minore di.. etc. Grazie in anticipo
contase
Preciso, almeno due condizioni. Il COUNTIF credo non vada bene;)
moooooooo ma se mi cambi domanda mentre ti do la soluzione :D:D
countifs :D
ripeti il range per ogni criteria ;)
Wertherino
01-04-2008, 13:28
countifs :D
ripeti il range per ogni criteria ;)
COUNTIF(C8:C26,"<=30",C8:C26,">=45")
è la scrittura giusta??
COUNTIF(C8:C26,"<=30",C8:C26,">=45")
è la scrittura giusta??
COUNTIFS(C8:C26;"<=30";C8:C26;">=45")
Wertherino
01-04-2008, 13:41
COUNTIFS(C8:C26;"<=30";C8:C26;">=45")
mi dà errore zuper:confused:
hai messo il punto e virgola vero?
allega il file xls zippato che ci do un occhio :)
Wertherino
01-04-2008, 15:22
hai messo il punto e virgola vero?
allega il file xls zippato che ci do un occhio :)
è semplicemente una colonna le cui celle contengono dei numeri.ti invio uno stamp del messaggio di errore.
Wertherino
01-04-2008, 15:23
è semplicemente una colonna le cui celle contengono dei numeri.ti invio uno stamp del messaggio di errore.
cmq si, ho messo ";" come hai scritto tu;)
a me nn lo da...nn so perchè...
se puoi allega xls :)
Wertherino
01-04-2008, 16:02
a me nn lo da...nn so perchè...
se puoi allega xls :)
si puo' caricare il .rar?
Wertherino
01-04-2008, 16:21
si puo' caricare il .rar?
carico più tardi il .zip;
a dopo
Wertherino
01-04-2008, 18:37
carico più tardi il .zip;
a dopo
ecco il file, nulla di speciale. Anche nella versione italiana dubbi sul modo di scrittura per coinvolgere due condizioni contemporaneamente: una variabile compresa tra due limiti, inferiore e superiore;)
ecco il file, nulla di speciale. Anche nella versione italiana dubbi sul modo di scrittura per coinvolgere due condizioni contemporaneamente: una variabile compresa tra due limiti, inferiore e superiore;)
nin zo proprio che dirti...io ho inserito
=COUNTIFS(C8:C26;">=30";C8:C26;"<=45")
proprio sotto la tua formula che da 14
e mi esce correttamente
6
Wertherino
01-04-2008, 22:54
nin zo proprio che dirti...io ho inserito
=COUNTIFS(C8:C26;">=30";C8:C26;"<=45")
proprio sotto la tua formula che da 14
e mi esce correttamente
6
strano..sicuro che ci sia la "S"?; sul manuale leggo COUNTIF. Comunque ne riparliam domani. grazie comunque, ciao zuper
strano..sicuro che ci sia la "S"?; sul manuale leggo COUNTIF. Comunque ne riparliam domani. grazie comunque, ciao zuper
c'è la S
plurale di IF :D
Wertherino
03-04-2008, 19:32
c'è la S
plurale di IF :D
credo che la sintassi per Excel 2003 non sia corretta. COUNTIFS è nella versione 2007. A presto e grazie
Preciso, almeno due condizioni. Il COUNTIF credo non vada bene;)
Ciao. Nel tuo caso, infatti, e per funzioni via via più elaborate e complesse, le semplici funzioni integrate di Excel non stanno al passo delle nostre esigenze...
Nel tuo caso specifico ti consiglio di crearti una tua funzione personalizzata, che non solo risolve questo piccolo problema, ma utile anche come "template" per funzioni con un numero illimitato di condizioni e controlli... ;)
Tutto quello che devi fare è di aprire il tuo file, entrare nell'editor VBA, e creare un nuovo Modulo di codice, nel quale mettere questa funzione :
Public Function MIA_FUNZIONE(Intervallo As String) As Long
Dim conta As Long
conta = 0
Dim Cella As Range
For Each Cella In Range(Intervallo)
'Condizione 1 :
If Cella.Value >= 30 And Cella.Value <= 45 Then
conta = conta + 1
End If
'Condizione 2 :
'...
'...
Next
MIA_FUNZIONE = conta
End Function
A questo punto, torna su Foglio1 e nella cella che deve contenere il risultato inserisci questa formula :
=MIA_FUNZIONE("C8:C26")
Dai Invio, e... fammi sapere... ;)
Wertherino
04-04-2008, 21:05
Ciao. Nel tuo caso, infatti, e per funzioni via via più elaborate e complesse, le semplici funzioni integrate di Excel non stanno al passo delle nostre esigenze...
Nel tuo caso specifico ti consiglio di crearti una tua funzione personalizzata, che non solo risolve questo piccolo problema, ma utile anche come "template" per funzioni con un numero illimitato di condizioni e controlli... ;)
Tutto quello che devi fare è di aprire il tuo file, entrare nell'editor VBA, e creare un nuovo Modulo di codice, nel quale mettere questa funzione :
Public Function MIA_FUNZIONE(Intervallo As String) As Long
Dim conta As Long
conta = 0
Dim Cella As Range
For Each Cella In Range(Intervallo)
'Condizione 1 :
If Cella.Value >= 30 And Cella.Value <= 45 Then
conta = conta + 1
End If
'Condizione 2 :
'...
'...
Next
MIA_FUNZIONE = conta
End Function
A questo punto, torna su Foglio1 e nella cella che deve contenere il risultato inserisci questa formula :
=MIA_FUNZIONE("C8:C26")
Dai Invio, e... fammi sapere... ;)
Grazie Marco, ottimo lavoro
fracarro
20-07-2008, 11:18
COUNTIFS(C8:C26;"<=30";C8:C26;">=45")
E se invece devo confrontare i valori della colonna C con la colonna D?
Mi spiego meglio. Supponiamo che io voglia sapere nell'intervallo C1:C100 quante volte la condizione Ci<Di si è verificata, come posso fare? Esiste una funzione excel oppure bisogna scrivere delle macro?
E se invece devo confrontare i valori della colonna C con la colonna D?
Mi spiego meglio. Supponiamo che io voglia sapere nell'intervallo C1:C100 quante volte la condizione Ci<Di si è verificata, come posso fare? Esiste una funzione excel oppure bisogna scrivere delle macro?
Dim conta As Integer
conta = 0
Dim i As Integer
For i = 1 To 100
If Range("C" & i).Value < Range("D" & i).Value Then
conta = conta + 1
End If
Next i
MsgBox conta
;)
fracarro
21-07-2008, 11:25
Dim conta As Integer
conta = 0
Dim i As Integer
For i = 1 To 100
If Range("C" & i).Value < Range("D" & i).Value Then
conta = conta + 1
End If
Next i
MsgBox conta
;)
Grazie per l'aiuto. Ne deduco che non è possibile risolvere il problema con le funzioni standard di excel giusto? Ho però un problema. Come faccio funzionare questo codice? Ho provato a creare la funzione come descritto qui http://office.microsoft.com/it-it/excel/HA010548461040.aspx?pid=CH062528191040 ma non funziona, sai perchè?
Altra domanda. Date le colonne C e D di numeri, vorrei sapere quanti numeri di C non sono contenuti in D. Anche per questo ci vuole una macro?
Grazie per l'aiuto. Ne deduco che non è possibile risolvere il problema con le funzioni standard di excel giusto? Ho però un problema. Come faccio funzionare questo codice? Ho provato a creare la funzione come descritto qui http://office.microsoft.com/it-it/excel/HA010548461040.aspx?pid=CH062528191040 ma non funziona, sai perchè?
Deduzione non corretta. Io non ho detto che non si possa fare con le semplici formule. Ho conosciuto gente che piuttosto che scrivere 2 righe di Visual Basic preferisce creare funzioni pazzesche, prolisse e illeggibili.
Io preferisco VBA.
Il mio codice precedente poteva essere ad esempio associato al Click di un pulsante ecc...
Se invece vuoi usare una Function, la devi PRIMA creare in un modulo, come avevo spiegato più sopra a Wertherino... Poniamo tu voglia mettere il risultato del conteggio in A1 :
Nel modulo :
Public Function FUNZIONE(arg As String) As Integer
Dim conta As Integer
conta = 0
Dim i As Integer
For i = 1 To 100
If Range("C" & i).Value < Range("D" & i).Value Then
conta = conta + 1
End If
Next i
FUNZIONE = conta
End Function
In A1 : =FUNZIONE("")
Altra domanda. Date le colonne C e D di numeri, vorrei sapere quanti numeri di C non sono contenuti in D. Anche per questo ci vuole una macro?
Si dovrebbe poter fare anche con le formule. Io lo farei con VBA...
fracarro
22-07-2008, 08:39
Deduzione non corretta. Io non ho detto che non si possa fare con le semplici formule. Ho conosciuto gente che piuttosto che scrivere 2 righe di Visual Basic preferisce creare funzioni pazzesche, prolisse e illeggibili.
Io preferisco VBA.
Il mio codice precedente poteva essere ad esempio associato al Click di un pulsante ecc...
Se invece vuoi usare una Function, la devi PRIMA creare in un modulo, come avevo spiegato più sopra a Wertherino... Poniamo tu voglia mettere il risultato del conteggio in A1 :
Nel modulo :
Public Function FUNZIONE(arg As String) As Integer
Dim conta As Integer
conta = 0
Dim i As Integer
For i = 1 To 100
If Range("C" & i).Value < Range("D" & i).Value Then
conta = conta + 1
End If
Next i
FUNZIONE = conta
End Function
In A1 : =FUNZIONE("")
Si dovrebbe poter fare anche con le formule. Io lo farei con VBA...
Ho seguito le tue istruzioni ma non funziona. Dopo aver creato la funzione, vado nel foglio di lavoro, inserisco =FUNZIONE("") e excel mi da l'errore #nome? come mai? Inoltre l'argomento dato in input arg dove viene usato nella funzione? Facendo riferimento anche alla funzione per Wertherino, si potrebbe modificare la mia per passarle in input le due colonne che mi interessano invece di fissarle nel codice? Grazie per l'aiuto, ma non ho mai programmato in VBA ne usato macro su excel (si vede?).
Ho seguito le tue istruzioni ma non funziona. Dopo aver creato la funzione, vado nel foglio di lavoro, inserisco =FUNZIONE("") e excel mi da l'errore #nome? come mai? Inoltre l'argomento dato in input arg dove viene usato nella funzione? Facendo riferimento anche alla funzione per Wertherino, si potrebbe modificare la mia per passarle in input le due colonne che mi interessano invece di fissarle nel codice? Grazie per l'aiuto, ma non ho mai programmato in VBA ne usato macro su excel (si vede?).
Ti va in errore perchè usi una versione vecchia di Excel, che non accetta il parametro "", oppure non hai messo la Function come Public in un modulo...
Comunque passare il range come argomento si può fare benissimo :
Nel modulo :
Public Function FUNZIONEINT(intervallo As String) As Integer
Dim cella As Range
Dim conta As Integer
conta = 0
For Each cella In Range(intervallo)
If cella.Value < Cells(cella.Row, cella.Column + 1).Value Then
conta = conta + 1
End If
Next
FUNZIONEINT = conta
End Function
In A1: =FUNZIONEINT("C1:D100")
Se non ti funzia neanche questa hai seri problemi con il tuo Excel... ;)
fracarro
22-07-2008, 14:47
Ti va in errore perchè usi una versione vecchia di Excel, che non accetta il parametro "", oppure non hai messo la Function come Public in un modulo...
Comunque passare il range come argomento si può fare benissimo :
Nel modulo :
Public Function FUNZIONEINT(intervallo As String) As Integer
Dim cella As Range
Dim conta As Integer
conta = 0
For Each cella In Range(intervallo)
If cella.Value < Cells(cella.Row, cella.Column + 1).Value Then
conta = conta + 1
End If
Next
FUNZIONEINT = conta
End Function
In A1: =FUNZIONEINT("C1:D100")
Se non ti funzia neanche questa hai seri problemi con il tuo Excel... ;)
Grazie mille funziona tutto. Ho excel 2003. L'errore erano proprio le virgolette. Abituato con le funzioni standard non le mettevo vai. Visto che ti vedo ferrato in materia, c'è un modo per rendere questa funzione sempre disponibile tra quelle personalizzate in un qualunque foglio di excel? Attualmente credo che per ogni nuovo file devo ricreare il modulo.
Grazie mille funziona tutto. Ho excel 2003. L'errore erano proprio le virgolette. Abituato con le funzioni standard non le mettevo vai. Visto che ti vedo ferrato in materia, c'è un modo per rendere questa funzione sempre disponibile tra quelle personalizzate in un qualunque foglio di excel? Attualmente credo che per ogni nuovo file devo ricreare il modulo.
Beh, fare un semplice copia/incolla di qualche funzioncina non lo vedo proprio un gran sbattimento. Inoltre io consiglio sempre di mantenere macro, sub e funzioni all'interno dello stesso Workbook che ne deve fare uso.
Per rispondere alla tua domanda, sì, metodi ce ne sono. Un metodo ad esempio è quello di creare un file .XLA che contiene tutte le funzioni desiderate e renderlo visibile a tutti i files Excel interessati... Ma bisogna rispettare certe condizioni "rigide" e comunque dovresti sempre modificare uno a uno i files che ne devono fare uso, specificando DOVE e COME reperire le funzioni esterne...
Modifica per modifica, molto meglio e più sicuro che ogni Workbook contenga tutto il codice di cui ha bisogno. ;)
fracarro
28-07-2008, 10:11
Beh, fare un semplice copia/incolla di qualche funzioncina non lo vedo proprio un gran sbattimento. Inoltre io consiglio sempre di mantenere macro, sub e funzioni all'interno dello stesso Workbook che ne deve fare uso.
Per rispondere alla tua domanda, sì, metodi ce ne sono. Un metodo ad esempio è quello di creare un file .XLA che contiene tutte le funzioni desiderate e renderlo visibile a tutti i files Excel interessati... Ma bisogna rispettare certe condizioni "rigide" e comunque dovresti sempre modificare uno a uno i files che ne devono fare uso, specificando DOVE e COME reperire le funzioni esterne...
Modifica per modifica, molto meglio e più sicuro che ogni Workbook contenga tutto il codice di cui ha bisogno. ;)
Ok grazie mille. Faccio come mi consigli per evitare sbattimenti.
Ne deduco che non è possibile risolvere il problema con le funzioni standard di excel giusto?
Come ti ha già risposto MarcoGG la deduzione non è corretta, se preferisci le funzioni al VBA prova con:
quesito 1
=CONTA.SE(C8:C26;">=30")-CONTA.SE(C8:C26;">45")
oppure
=MATR.SOMMA.PRODOTTO((C8:C26>=30)*(C8:C26<=45))
quesito 2
=MATR.SOMMA.PRODOTTO(1*(C8:C26<D8: D26))
Altra domanda. Date le colonne C e D di numeri, vorrei sapere quanti numeri di C non sono contenuti in D. Anche per questo ci vuole una macro?
Non necessariamente:
=MATR.SOMMA.PRODOTTO(1*(CONTA.SE(D8: D26;C8:C26)=0))
N.B. ho dovuto inserire uno spazio tra : e D altrimenti sarebbe comparsa la faccina :D
Spero di non aver scritto troppe fesserie, sono un po' arrugginito.
Ciao
fracarro
09-08-2008, 13:40
Come ti ha già risposto MarcoGG la deduzione non è corretta, se preferisci le funzioni al VBA prova con:
quesito 1
=CONTA.SE(C8:C26;">=30")-CONTA.SE(C8:C26;">45")
oppure
=MATR.SOMMA.PRODOTTO((C8:C26>=30)*(C8:C26<=45))
quesito 2
=MATR.SOMMA.PRODOTTO(1*(C8:C26<D8: D26))
Non necessariamente:
=MATR.SOMMA.PRODOTTO(1*(CONTA.SE(D8: D26;C8:C26)=0))
N.B. ho dovuto inserire uno spazio tra : e D altrimenti sarebbe comparsa la faccina :D
Spero di non aver scritto troppe fesserie, sono un po' arrugginito.
Ciao
Perfetto.
Entrambe le funzioni eseguono egregiamente il loro compito.
Nonostante l'help dell'excel sulla funzione MATR.SOMMA.PRODOTTO non mi è tanto chiaro come lavorano le tue funzioni: =MATR.SOMMA.PRODOTTO(1*(C8:C26<D8: D26)) e
=MATR.SOMMA.PRODOTTO(1*(CONTA.SE(D8: D26;C8:C26)=0))
ma l'importante è che funzionino.
Grazie mille ses4.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.