microsoft excel

Cómo hacer coincidir los valores de la columna A con los de las columnas B,C o D y devolver el nombre de la columna donde se ha encontrado la coincidencia

Tengo una tabla parecida a esta (pero con miles de filas):

A B C D
a1 a3 a1 a4
a2 a2 a5
a3
a4
a5

La idea es acabar añadiendo otra columna,E,que me diga en qué "categoría" (siendo B,C y D las diferentes categorías)está cada elemento de A.

En mi mente,querría que buscara en B:D todos los valores de A,y que cuando encontrara una coincidencia devolviera el nombre de la columna donde se encontró la coincidencia.

Por desgracia,no estoy acostumbrado a usar Excel (suelo usar R)y estoy un poco fuera de mi elemento.¡Cualquier ayuda sería muy apreciada!

El resultado deseado sería algo así:

A B C D E
a1 a3 a1 a4 "C"
a2 a2 a5 "C"
a3 "B"
a4 "D"
a5 "D"

Prueba esta solución.

Consulte la siguiente captura de pantalla.

En E1 la fórmula es.

=SUBSTITUTE(ADDRESS(1,MAX(IF($B$1:$D$5=A1,COLUMN($B$1:$D$5),0)),4),1,"")

Tenga en cuenta que después de escribir esta fórmula debe convertirla en una fórmula de matriz pulsandoCTRL+SHIFT+ENTERdesde la barra de fórmulas.La fórmula se encerrará automáticamente entre llaves para indicar que se trata de una fórmula de matriz.

No funcionará correctamente sin este paso.

Arrástrelo hacia abajo hasta las filas previstas.

También puede utilizar IFERROR para eliminar cualquier error #VALUE o #N/A y sustituirlo por un espacio en blanco cuando no se encuentre el valor,si es el caso.

Dependiendo del carácter separador de la lista,que puede ser;en lugar de,en algunas regiones,puede ser necesario sustituir la coma por el punto y coma en la fórmula,por si acaso.

En caso de que desee comillas dobles alrededor de la letra de la columna.

=""""&SUBSTITUTE(ADDRESS(1,MAX(IF($B$1:$D$5=A1,COLUMN($B$1:$D$5),0)),4),1,"")&""""



Si tiene la posibilidad de más de una ocurrencia,intente algo así:

=TEXTJOIN(",",,SUBSTITUTE(IFERROR(SORT(ADDRESS(1,($A2=B2:D6)*COLUMN(B2:D6),4)),""),"1",""))

que también ordena las columnas.

Si tiene algo más que etiquetas de letras literales que coincidan con las etiquetas de las columnas de Excel, lo siguiente las recopilará todas. SORT se puede usar para ordenar por orden de columna o para ordenar alfabéticamente los resultados del encabezado real:

=TEXTJOIN(",",,IFERROR(SWITCH(SUBSTITUTE(IFERROR(SORT(ADDRESS(1,($A2=B2:D6)*COLUMN(B2:D6),4)),""),"1",""),"B",B1,"C",C1,"D",D1),""))