2010-09-17 14:13:03 +0000 2010-09-17 14:13:03 +0000
32
32

Come contare il numero di valori distinti in un intervallo?

Ho una grande tabella che è già organizzata usando filtri ecc. Vorrei aggiungere un sommario sotto certe colonne che contenga il numero di valori distinti in quella colonna.

*Non c'è una funzione =COUNTDISTINCT(A2:A100) quindi cosa posso fare invece? * (Excel 2003)

Non posso esattamente usare le risposte a questa domanda simile perché non voglio modificare la tabella o il filtraggio. Ho bisogno di una aggiunta nel foglio di lavoro, non di una modifica.

Risposte (7)

32
32
32
2011-06-05 08:44:38 +0000
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

lo farà senza dover usare una formula di array.

7
7
7
2010-09-17 14:16:02 +0000

Ho trovato una soluzione qui che sembra essere un modo incredibile di risolvere il problema. Ma ehi, funziona…

=SUM(IF(COUNTIF(A2:A100,A2:A100)=0, “”, 1/COUNTIF(A2:A100,A2:A100))

e poi premete Ctrl+Shift+Invio. Premendo solo Invio si otterrà un risultato sbagliato.

1
1
1
2013-05-02 05:42:13 +0000

=SUM(1/COUNTIF(A2:A100;A2:A100))

Conferma con Ctrl+Shift+Enter

Per ogni cella, conta quante volte si verifica, e somma gli inversi di tutti questi valori. Supponiamo che una stringa o un numero ricorra 5 volte. Il suo inverso è 0,2 che viene sommato 5 volte, quindi viene aggiunto 1. Alla fine si ottiene il numero di valori diversi.

**Nota: non funziona quando ci sono degli spazi vuoti!

1
1
1
2010-09-17 15:08:28 +0000

Ho trovato due risorse per te: http://www.excelforum.com/excel-worksheet-functions/365877-count-distinct-values.html

e http://www.cpearson.com/excel/Duplicates.aspx

Dovresti essere in grado di trovare una soluzione praticabile da lì.

1
1
1
2010-09-17 15:10:55 +0000

Questo articolo mostra questo per i valori di testo:

=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))

e questo per i valori numerici:

=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))

Questo articolo mostra formule simili, ma mostra anche un metodo che usa filtri.

Conta il numero di valori unici usando un filtro

Puoi usare il Filtro avanzato per estrarre i valori unici da una colonna di dati e incollarli in una nuova posizione. Poi puoi usare la funzione ROWS per contare il numero di elementi nel nuovo intervallo.

  1. Assicuratevi che la prima riga della colonna abbia un'intestazione di colonna.
  2. Nel menu Dati, punta su Filtro e poi clicca su Filtro avanzato.
  3. Nella finestra di dialogo Filtro avanzato, fai clic su Copia in un'altra posizione.
  4. Se l'intervallo che stai contando non è già selezionato, cancella qualsiasi informazione nella casella Intervallo elenco e poi clicca sulla colonna (o seleziona l'intervallo) che contiene i tuoi dati.
  5. Nella casella Copia in, cancella qualsiasi informazione nella casella o clicca nella casella, e poi clicca su una colonna vuota dove vuoi copiare i valori unici.
  6. Seleziona la casella di controllo Solo record unici e clicca su OK.

  7. Nella cella vuota sotto l'ultima cella dell'intervallo, inserite la funzione ROWS. Usa l'intervallo di valori unici che hai appena copiato come argomento. Per esempio, se l'intervallo di valori unici è B1:B45, allora inserite:
    =ROWS(B1:B45)

0
0
0
2013-07-02 11:56:27 +0000

Prova questo link. Questo mostra come contare i valori unici in una lista omettendo le celle vuote. http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= sum( if( frequency( match( List , List , 0 ) , match( List , List , 0 )) > 0 , 1 ))

Dove “Lista” è il tuo intervallo di celle per esempio:

Lista = $A$2:$A$12 OR- Lista = offset($A$1,,,match( rept(“z”,255) , $A:$A )) -OR- Lista = offset($A$1,,,match( value(rept(“9”,255)) , $A:$A ))

0
0
0
2013-08-03 23:06:09 +0000

=SUM(IF(FREQUENCY(IF(SUBTOTAL(3,OFFSET(A2:A100,ROW(A2:A100)-ROW(A2),0,1)),MATCH(“~”&A2:A100,A2:A100&“”,0)),ROW(A2:A100)-ROW(A2)+1),1))

Assicurati di premere CONTROL+SHIFT+ENTER dopo aver incollato questa formula. Questo è per un intervallo di A2:A100, aggiustate l'intervallo di conseguenza.