microsoft excel

Comment faire correspondre des valeurs de la colonne A avec des valeurs des colonnes B,C ou D et renvoyer le nom de la colonne dans laquelle la correspondance a été trouvée ?

J'ai un tableau qui ressemble à quelque chose comme ceci (mais des milliers de lignes):

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

L'idée est de finir par ajouter une autre colonne,E,qui m'indique dans quelle " catégorie " (B,C et D étant les différentes catégories)se trouve chaque élément de A.

Dans mon esprit,je voudrais qu'il recherche toutes les valeurs de A dans B:D,et que lorsqu'il trouve une correspondance,il renvoie le nom de la colonne où la correspondance a été trouvée.

Malheureusement,je n'ai pas l'habitude d'utiliser Excel (j'utilise habituellement R)et je suis un peu hors de mon élément.Toute aide serait la bienvenue !

Le résultat souhaité serait quelque chose comme ceci :

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

Essayez cette solution.

Reportez-vous à la capture d'écran ci-dessous.

Dans E1,la formule est.

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

Notez qu'après avoir écrit cette formule,vous devez la convertir en formule de tableau en appuyant sur la toucheCTRL+SHIFT+ENTERdans la barre de formule.La formule sera automatiquement entourée d'accolades pour indiquer qu'il s'agit d'une formule de tableau.

Il ne fonctionnera pas correctement sans cette étape.

Faites-le glisser vers le bas jusqu'aux rangs prévus.

Vous pouvez également utiliser IFERROR pour éliminer toute erreur #VALUE ou #N/A et la remplacer par un blanc lorsque la valeur n'est pas trouvée,si tel est le cas.

En fonction du caractère de séparation de la liste,qui peut être;au lieu de,dans certaines régions,vous devrez peut-être remplacer la virgule par le point-virgule dans la formule,juste au cas où.

Au cas où vous souhaiteriez des guillemets autour de la lettre de la colonne.

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



Si vous avez la possibilité d'avoir plus d'une occurrence,essayez quelque chose comme :

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

qui trie également les colonnes.

Si vous avez autre chose que des étiquettes de lettres littérales qui correspondent aux étiquettes de colonne Excel, ce qui suit les collectera toutes. SORT peut être utilisé soit pour trier par ordre de colonne, soit pour classer par ordre alphabétique les résultats d'en-tête réels :

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