2013-08-06 16 views
9

C'è una colonna Values con un numero di Strings, quindi mostra sotto il valore più comune e il numero di occorrenze di quel valore (cioè la modalità Strings). Ecco un esempio.Come emettere il valore più comune e il numero di occorrenze di quel valore nel foglio di calcolo?

+--------+ 
| Values | 
+--------+ 
| AA | 
+--------+ 
| BB | 
+--------+ 
| AA | 
+--------+ 
| AA | 
+--------+ 
| GG | 
+--------+ 
| DD | 
+--------+ 
| DD | 
+--------+ 
|  | 
+-----------------+--------+ 
| Most Common | AA | 
+-----------------+--------+ 
| Number of times | 03 | 
+-----------------+--------+ 

Questo sarà fatto in Google Spreadsheets! Qualche consiglio?

+2

FYI: il valore più comune in un set è chiamato "Modalità" del set. (http://en.wikipedia.org/wiki/Mode_(statistics)) – RBarryYoung

risposta

20

Per il tuo esempio specifico, lascia che sia la colonna A, quindi hai A1 = 'AA', A2 = 'BB', ..., A7 = 'DD'.

Per trovare il numero di volte che l'elemento di massima si verifica, vogliamo contare ogni elemento unico, quindi restituire il conteggio massimo, quindi in una cella di utilizzare la formula

=MAX(COUNTIF(A1:A7,A1:A7)) 

Si tratta di una formula di matrice, in modo in Excel devi premere Ctrl + Maiusc + Invio per usarlo. Per utilizzare in Google Spreadsheets, circondarlo con ARRAYFORMULA in modo che diventi

=ARRAYFORMULA(MAX(COUNTIF(A1:A7,A1:A7))) 

Spiegazione: il countif all'interno conta delle cellule del A1: A7, se sono uguali ad ogni valore in A1: A7, e li mette in un elenco. Max restituisce il valore massimo in quell'elenco.

Ora, per ottenere l'elemento reale, abbiamo un'altra formula di ARRAY. Possiamo eseguire una ricerca indice/partita per calcolare il valore, quindi all'interno della funzione, max trova il valore con il conteggio maggiore, quindi viene passato a una funzione indice + corrispondenza per trovare il valore nell'elenco originale

=INDEX(A1:A7,MATCH(MAX(COUNTIF(A1:A7,A1:A7)),COUNTIF(A1:A7,A1:A7),0)) 

e quindi per Google Spreadsheets

=ARRAYFORMULA(INDEX(A1:A7,MATCH(MAX(COUNTIF(A1:A7,A1:A7)),COUNTIF(A1:A7,A1:A7),0))) 

si sostituisce ogni istanza di A1: A7 con la portata effettiva dei dati.

Questo post è stato utile: http://www.mrexcel.com/forum/excel-questions/34530-mode-text-strings.html

+0

Uomo eccellente! Questo è ESATTAMENTE quello che stavo cercando, per lavorare su Google SpreadSheet è semplicemente semplice circondare le formule con ARRAYFORMULA() ed estrarre il '=' char di 'INDICE' e' MAX' – ricardocaldeira

+1

Una volta determinato il più comune è AA (ad esempio in B8), '= COUNTIF (A1: A7, B8)' è piuttosto semplice per il numero di volte. – pnuts

+0

Hanno cambiato Google Spreadsheets? Questa soluzione non funziona per me – riddleculous

0

Si potrebbe creare una mappa con una stringa e un contatore e incrementare il contatore su ogni occorrenza della stringa. Non so java script, ma qualcosa di simile alla seguente sudocode dovrebbe funzionare per contare il numero di occorrenze:

Dictionary<string, int> _map; 

foreach(cell in sheet.cells) 
{ 
    if(_map.contains(cell.value) == FALSE) 
    { 
     _map.add(cell.value) 
    { 
    _map.item(cell.value) += 1 // increment number of occurrences 
} 

Dopo questo si dovrebbe ciclo per trovare il maggior numero, memorizzare il suo stringa associata e trovare il numero associato la stringa del numero più grande.

0

Per ottenere questo funzionamento in Google Spreadsheet, quanto sopra non ha funzionato, restituendo invece un errore fuori limite. Ho dovuto modificare leggermente la formattazione. Questo è ciò che ha funzionato;

=index(G14:ZZ14;;(MATCH(MAX(COUNTIF(G14:ZZ14,G14:ZZ14)),COUNTIF(G14:ZZ14,G14:ZZ14),0))) 

Sostituire i 5 riferimenti a G14: ZZ14 con il proprio intervallo.

+1

a cosa servono i 2 punti e virgola? – chiliNUT

Problemi correlati