Extraia uma lista de valores exclusivos de duas colunas sem uma fórmula de matriz ou VBA

Extraia uma lista de valores exclusivos de duas colunas sem uma fórmula de matriz ou VBA

Tenho duas colunas de dados, A e B. Gostaria de mesclar essas colunas de forma que apenas os valores exclusivos sejam incluídos na lista final. No momento, estou usando uma fórmula de matriz dehttps://www.get-digital-help.com/2009/06/16/extract-an-unique-distinct-list-from-two-columns-using-excel-2007-array-formula/:

{=IFERROR(IFERROR(INDEX($A$2:$A$20, MATCH(0, COUNTIF($C$1:C1, $A$2:$A$20), 0)), INDEX($B$2:$B$7, MATCH(0, COUNTIF($C$1:C1, $B$2:$B$7), 0))), "")} 

Embora isso funcione maravilhosamente bem, eu gostaria de evitar fórmulas de matriz, se possível, pois elas retardam significativamente nossos PCs já ruins. Também não podemos usar o VBA por motivos, então isso também não é uma opção.

Há alguma maneira de fazer isso?

Responder1

Bem, encontrei uma maneira de fazer isso que parece estar funcionando por enquanto, mas com certeza não é bonita.

A coluna A possui um conjunto de dados, digamos 200 valores totais.

A coluna B possui um segundo conjunto de dados, digamos 175 valores.

A coluna C verifica se o valor da coluna B está presente na coluna A

 =IF(COUNTIF($A$2:$A$750,B2)>0,"Match","No Match")

A coluna E tem uma contagem que apenas controla onde estamos em relação ao final do conjunto de dados na coluna A

=IF(A2=0,MAX($E$1:E1)+1,"")

A coluna F tem uma contagem que aumenta sempre que a coluna C indica um valor único

=IF(C2="No Match",MAX($F$1:F1)+1,"")

A coluna G é onde os dois conjuntos de dados são combinados. Primeiro, ele lista os valores em A. Ao chegar ao final da lista e começar a encontrar 0s, ele usa o índice criado na coluna E para encontrar o primeiro valor único em B e aumenta até atingir o valor final.

=IF(A2=0,IF(E2>MAX(F:F),"",INDEX(B:B,MATCH(E2,F:F))),A2)

Responder2

Há uma boa discussão sobre como extrair valores únicos e distintos emeste site de tutoriais do Excel.

E a resposta à sua pergunta é sim, envolve apenas o uso de um INDEX() extra para cada parte. Aqui está a modificação:

=IFERROR(INDEX($A$2:$A$20,MATCH(0,INDEX(COUNTIF($C$1:C1,$A$2:$A$20),0),0)),INDEX($B$2:$B$7,MATCH(0,INDEX(COUNTIF($C$1:C1,$B$2:$B$7),0),0)))

Deixei de lado o IFERROR() mais externo. Espero que isto ajude.

informação relacionada