|
Rank: Member
Iscritto dal : 2/7/2004 Posts: 0
|
Salve Ho scritto questa domanda in fase di registrazione, ma non riesco a ritrovarla, per cui la ripropongo (non me ne vogliate). In excel dato un intervallo di celle formattato come data, avrei la necessità di contare le celle che hanno lo stesso valore solo una volta. Per esempio 01/01/2004, 01/01/2004, 01/01/2004, 02/01/2004, 02/01/2004, 03/01/2004, 04/01/2004, = 4. Ringraziando chiunque può aiutarmi saluti Gianni
|
|
|
|
|
Rank: Member
Iscritto dal : 10/4/2000 Posts: 0
|
ciao ho scritto una serie di date a caso partendo dalla cella a1 alla a20 (non e' importante quanto e' lunga la serie) ed in seguito ho creato questa macro Public Sub prova() Range("a1").CurrentRegion.Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Range("a1").Select 'Range("d1") = 0 a = 0 Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Activate If ActiveCell () ActiveCell.Offset(-1, 0) Then 'Range("d1") = Range("d1") + 1 a = a + 1 End If Loop Range("a1").Select MsgBox ("Le date sono ") & a, vbInformation + vbSystemModal, "" End Sub la macro ordina le celle per data e se ne trova una diversa dalla precedente aumenta il valore di A di 1. una volta terminata la scansione della serie compare un messaggio che ti dice quante date ci sono nella serie . ps: puoi far anche scrivire il numero di date in una cella es d1 togliendo l'apostrofo nelle corrispondenti righe della macro
ciao
|
|
Rank: Member
Iscritto dal : 10/4/2000 Posts: 0
|
ciao come al solito il sito non prende il simbolo del diverso , in questa riga If ActiveCell () ActiveCell.Offset(-1, 0) Then sostituisci () con il simbolo del diverso e tutto funzionera' ciao
|
|
Rank: Member
Iscritto dal : 2/7/2004 Posts: 0
|
Ciao Ti ringrazio della risposta, che mi da modo di provare anche le macro (chissà magari riesco anche a fare qualche casino) Comunque girando per la rete ho trovato qualcosa che funziona almeno per quel che serve a me, dammi una tua opinione per favore: ipotizando di avere i dati da contare in "A", in "B1" scrivo =1*(CONTA.SE($B$1:B1;$B$1:B1)=1) poi trascino/copio fin dove mi serve, (per esempio fino a "B10") poi dove voglio visualizzare il risultato scrivo = SOMMA(B1:B10) Ciao e grazie ancora
<BLOCKQUOTE id=quote><font size=1 face="Sans Serif, Arial, Helvetica" id=quote>quote:<hr height=1 noshade id=quote> ciao ho scritto una serie di date a caso partendo dalla cella a1 alla a20 (non e' importante quanto e' lunga la serie) ed in seguito ho creato questa macro Public Sub prova() Range("a1").CurrentRegion.Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Range("a1").Select 'Range("d1") = 0 a = 0 Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Activate If ActiveCell () ActiveCell.Offset(-1, 0) Then 'Range("d1") = Range("d1") + 1 a = a + 1 End If Loop Range("a1").Select MsgBox ("Le date sono ") & a, vbInformation + vbSystemModal, "" End Sub la macro ordina le celle per data e se ne trova una diversa dalla precedente aumenta il valore di A di 1. una volta terminata la scansione della serie compare un messaggio che ti dice quante date ci sono nella serie . ps: puoi far anche scrivire il numero di date in una cella es d1 togliendo l'apostrofo nelle corrispondenti righe della macro
ciao <hr height=1 noshade id=quote></BLOCKQUOTE id=quote></font id=quote><font face="Sans Serif, Arial, Helvetica" size=2 id=quote>
|
|
Rank: Member
Iscritto dal : 10/4/2000 Posts: 0
|
ciao mi era venuta in mente la soluzione che hai proposto ma ha un limite mentre con la macro se ad esempio metti 200 date diverse essa le vede tutte , la funzione non credo(dovrei provare ) ciao
|
|
Guest |