Formula Excel 2010 per eliminare contenuti ripetuti in base al valore

Ho un foglio di calcolo con due colonne, un nome e un valore. Il nome viene ripetuto più volte con valori diversi, ad esempio:

Nome – 1
Nome – 2
Nome – 3

eccetera.

Sto cercando una formula che passerà attraverso il foglio di calcolo e cancella tutte le istanze duplicate della colonna di nome, salvando quella con il secondo valore più alto. Quindi, se inserisco un foglio di calcolo come quello precedente, salverà la row "Nome – 2" e cancellerai gli altri. È ansible?

EDIT: Il foglio di calcolo ha 6000+ valori, quindi preferirei una soluzione più automatica ansible. Pensavo qualcosa di simile:

  1. Ordina i valori per nome, quindi valore.
  2. Formula che elimina le righe duplicate con valori inferiori.
  3. Formula che elimina tutte le righe ma i valori più bassi.

Puoi get quello che vuoi con una colonna di aiuto e un filter.

Passaggio 1: colonna dell'agente

Aggiungere una colonna alla tua tabella con la seguente formula, where i nomi sono in A2:A18 ei valori sono in B2:B18 .

 =OR(COUNTIF($A$2:$A$18,A2)=1,SUMPRODUCT(1*(B2<$B$2:$B$18),1*(A2=$A$2:$A$18))=1) 

Questa formula restituirà TRUE per le righe che si desidera mantenere, cioè con il secondo valore più alto per i nomi duplicati e tutti i nomi non duplicati (come d nel mio esempio in basso). Se per caso non si desidera mantenere righe non duplicate, è ansible utilizzare la seguente formula.

 =SUMPRODUCT(1*(B2<$B$2:$B$18),1*(A2=$A$2:$A$18))=1 

esempio dell'helper column

Fase 2: Filtro

Semplicemente filtri l'intera tabella per le righe che sono TRUE nella colonna helper.

filtro

Se il filtraggio non è sufficiente e hai veramente bisogno di eliminare gli altri dati, puoi semplicemente copiare e incollare il risultato filtrato in un'altra tabella e, dopo aver eliminato la tabella originale, puoi incollare la copia pulita.

Sono d'accordo che dovresti ordinare per nome e valore; e sono d'accordo che Excellll ha un buon approccio. Ma la sua risposta non riesce se i tuoi dati contengono un legame per il valore più alto per un nome; Ho adattato (costruito) quella risposta qui:

Definire due colonne di helper:

  • C2=(A2<>A3)
  • D2=IF(A1=A2, B1, B2)

La colonna C identifica le righe che sono l'ultima occorrenza di un nome e la colonna D ottiene il secondo valore più alto (o l'unico valore, se c'è solo una occorrenza). Quindi filtra le righe in cui la colonna C contiene FALSE e unisci il nome nella colonna A con il valore nella colonna D Si noti che l'esempio riportto di seguito utilizza gli stessi dati della risposta di Excellll, eccetto che i primi due b sono entrambi 17. Ho utilizzato la formattazione condizionale per evidenziare i dati A e D where C è TRUE .

Un'altra alternativa potrebbe essere quella di creare una list con valori di nome univoco con questa opzione e quindi utilizzare la formula LARGE come formula di arrays, qualcosa di simile:

=LARGE(IF($A$2:$A$20=D2;$B$2:$B$20);2)

 ..IF($A$2:$A$20=D2;$B$2:$B$20)... If match condition, then give me the values. In my examples it could be something like {1,2,...,6,FALSE,...FALSE} and the formula omits FALSE values. =LARGE(..., ??) [??] Rank Value you want in this case 2 

per convertire come formula arrays, dopo averlo scritto, fai clic su F2 per modificare e Ctrl+Shift+Enter e la formula che otterrai qualcosa di simile: {=LARGE(...)}

Il foglio potrebbe essere così.