2013-04-11 18 views
20

Nella colonna A ho un elenco di nomi diversi. Nella colonna B, ho i valori 0 o 1.Count Valori univoci con una condizione

voglio ottenere un conteggio di tutti i nomi unici da colonna A che hanno 1 nella colonna B.

usando sotto formula di matrice sono in grado Numero di nomi univoci, ma non in grado di applicare condizioni su colonna B.

=SUM(1/COUNTIF(A:A,A:A)) 
+0

+ 1 Buona domanda :) –

+0

@SiddharthRout grazie :) – Tejas

risposta

8

Supponendo non più di 100 righe provare questa "formula matrice" per contare i diversi nomi A2: A100 dove c'è un 1 nella stessa riga in B2: B100:

=SUM(IF(FREQUENCY(IF(B2:B100=1,IF(A2:A100<>"",MATCH(A2:A100,A2:A100,0))),ROW(A2:A100)-ROW(A2)+1),1))

confermato con CTRL+SHIFT+ENTER

noti che dico diversi non unico come i due non sono la stessa

+0

+ 1 mi battuto sul tempo da 5 secondi :) –

6

Ti piace?

=SUM(--(FREQUENCY(IF(($B$1:$B$8=1), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8), ""), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8))>0)))

Questa è una forma di matrice. Si dovrà premere CTL + SHIFT +INVIO

Schermata

enter image description here

+0

@SiddarthRout: Bello ma davvero difficile da capire :) grazie comunque – Tejas

+0

brillante. Grazie per l'educazione! – CompanyDroneFromSector7G

3

ha a essere una formula? Un modo davvero semplice per fare ciò è di fare una tabella pivot fuori dalle colonne A e B. Quindi impostare la colonna B come campo filtro e il conteggio di A come valori (è necessario etichettare le colonne A e B). Quindi A4 sul foglio pivot (almeno nel predefinito) dovrebbe contenere la risposta. Ciò funzionerebbe per qualsiasi elenco di dimensioni e infatti funzionerebbe quando ci sono più condizioni.

Se deve essere una formula, deve essere interamente così? Se hai il permesso di ordinare per A prima che la tua formula funzioni, allora come su questo flusso di lavoro. Non sono pazzo di questo e ho il sospetto che potrebbe essere migliorato.

1) ordine di A (ascendente o discendente), poi da B (discendente)

2) In C ogni fila di C si inserisce una formula come questo:

=if (and(A2<>A1,B2=1),1,0) 

C1 sarebbe altrettanto segue:

=b1 

Trascinate dalla C2 fino a quando l'ultima riga dei dati (ad esempio C500).

3) Quindi contare sommando C, = somma (c1: c500).

È possibile trascinare la formula sotto le righe di dati (purché si conosca il numero massimo necessario), dovrebbe restituire 0 per tutte le righe vuote. Quindi mentre aggiungi dati a A e B il resto si aggiornerà automaticamente. Probabilmente dovrai ricorrere anche ai dati.

Una cosa bella della soluzione di tabella pivot è che può crescere automaticamente con il set di dati finché si inseriscono i nuovi dati all'interno delle righe dei dati esistenti. Naturalmente non è richiesto alcun cernita.

+0

È molto semplice. Nice1. Ma la confusione è, fino a che cosa dovrei trascinare la formula nella colonna C? Deve essere statico, giusto? – Tejas

+0

Ho provato a chiarire. – BKay

+0

Se avessi realizzato in tempo la tua risposta comprensiva includeva l'opzione PT che non avrei postato. – pnuts

1

facile con una tabella pivot ......:

SO15944249 example

3

relativamente semplice soluzione a questo problema comune è

= SUM ((B: B = 1)/(CONTA.PIÙ.SE A: A, A: A, B: B, B: B))

immesso come una formula di matrice.

Sarà necessario limitare la dimensione degli array a dove effettivamente si dispone di dati.