Excel: abbina due colonne e genera il terzo … E … ci sono più istanze in ogni colonna

Elaborazione di un post precedente: Excel corrisponde a due colonne e genera un terzo

Ho valori nella colonna A che non sono unici e valori nella colonna B che non sono unici, ma insieme le colonne A e B producono combinazioni uniche:

ABC 1 Red Car Result#1 2 Blue Boat Result #2 3 Red Boat Result #3 4 Green Car Result #4 

Diciamo che voglio trovare una corrispondenza in cui colonna A = rosso e colonna B = barca che dovrebbe restituire il valore corrispondente nella colonna C che dovrebbe essere risultato n. 3.

Usando la soluzione del post precedente:

=IF(MATCH("Red",A1:A4,0)=MATCH("Boat",B1:B4,0),INDEX(C1:C4,MATCH("Boat",B1:B4,0)),0)

Ciò restituirebbe effettivamente il valore della prima corrispondenza per Boat nella colonna B, che sarebbe il risultato n. 2 invece del risultato previsto n. 3 in cui la corrispondenza era vera.

Qualche idea su come modificare o scrivere una funzione che specifichi di recuperare le informazioni relative a dove la partita era vera (senza usare VBA)?

Ho pensato a un ansible intervento creando un’altra colonna che combina Col A e B per creare un identificatore univoco, ma speravo di evitarlo.

Grazie! Apprezzo davvero e mi dispiace per la formattazione della tabella. Sono ancora molto nuovo in questo.

È ansible recuperare una corrispondenza di due colonne utilizzando la funzione AGGREGATE per forzare tutto ciò che non corrisponde a un errore e ignorare gli errori.

INDICE AGGREGATE con due colonne MATCH

La formula in E6 è,

 =IFERROR(INDEX(C$1:C$99,AGGREGATE(15,6,ROW($1:$99)/((A$1:A$99="red")*(B$1:B$99="boat")), ROW(1:1))), "") 

In realtà stai usando la sotto-funzione SMALL della funzione AGGREGATE in modo da ottenere il secondo, il terzo, ecc. Partite successive aumentando il parametro k . Ho fatto questo sopra usando ROW(1:1) che è uguale a 1, ma aumenterà a 2, 3, ecc. Quando la formula sarà riempita.

La creazione di una terza colonna è la soluzione più efficiente. Tuttavia, se devi assolutamente evitarlo, potresti usare una formula complicata come questa:

 =INDEX($C$1:$C$6,MATCH(A11,$A$1:$A$6,0) + MATCH(B11,OFFSET($A$1,MATCH(A11,$A$1:$A$6,0)-1,1,COUNTA($A$1:$A$6)-MATCH(A11,$A$1:$A$6,0),1),0)-1) 

Ma la condizione è che la tabella di ricerca sia ordinata per entrambe le colonne 1 e 2.