Extraire deux mêmes données dans excel...

Fermé
Chico63 - 8 nov. 2011 à 20:26
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 - 10 nov. 2011 à 13:21
Bonjour,

Sous excel 2007, je cherche à extraire deux données identiques dans un même tableau, puis les assembler.

Exemple :
A B
1 1,3 Alpha
2 2,2 Beta
3 1,4 Gamma
4 1,3 Tera
5 2,1 Phi
6 2,1 Epsilon

Dans les cellules réponse (colonne D), le résultat doit être :
C D
1 1,3 "Alpha Tera"
2 1,4 "Gamma"
3 1,5
4 1,6
5 1,7
6 1,8
7 1,9
8 2,0
9 2,1 "Phi Epsilon"
10 2,2 "Beta"

Merci pour vos lumières !


A voir également:

2 réponses

Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
9 nov. 2011 à 01:16
Je n'ai pas compris la logique des tableaux.
0
slt

C'est simple mais je sais pas faire ça du tac o tac.

Il veut concaténer les chaînes de textes qui ont les mêmes coordonnées dans l'ordre d'apparition en partant du haut de la colonne à moins qu'il y a un ordre de concaténation selon certains critères qu'il n'a pas indiqué.

Formule (schéma) : Il faut utiliser la fonction cherche dans la colonne ou trouve dans la colonne les lignes contenant les même coordonnées (il y a un nombre dans deux colonnes en fait). Si plusieurs lignes sont identiques (les colonnes contenant les coordonnées), *if alors*, concaténer les chaînes de caractères (sur quelle colonne d'ailleurs ?), sinon mettre un seul texte (le contenu d'une seule cellule) uniquement.

Sur quelle colonne se trouve le texte ? Vu que a,b,c,d sont utilisées par les coordonnées ...
0
librequetucrois
9 nov. 2011 à 06:12
Le texte à concaténer si les coordonnées sont sur plusieurs lignes est dans la colonne B.

Le résultat est dans la colonne D.

1,3 (un virgule trois) par exemple est dans une seule colonne ; autant pour moi.
0
Re,

À améliorer, si c'est à peu près utilisable ...

=CONCATENER(RECHERCHEV($C1;$A1:$B1;2);" ";SI(ESTERREUR(EQUIV($A:$A;$C:$C;0));"";DECALER("C"&EQUIV($A:$A;$C:$C;0);0;1;1;1)))

Il manque un contrôle au cas où il n'y a rien de trouvé ; pour savoir quoi afficher ; oui, en dehors des erreurs dans la formule ; et non je n'ai pas testé la formule, même si justement je n'arrive pas à savoir à l'avance ce que ça donne comme résultat (manque de savoir).

Validez la formule comme une formule matricielle, dans une ou dans plusieurs cellules d'un coup, en utilisant la combinaison [Ctrl]-[Maj]-[Entrée].
0
Avec un contrôle d'erreur (si c'est le bon type d'erreur détectée) :

=CONCATENER(SI(ESTERREUR(RECHERCHEV($C1;$A1:$B1;2);$C1;RECHERCHEV($C1;$A1:$B1;2));" ";SI(ESTERREUR(EQUIV($A:$A;$C:$C;0));"";DECALER("C"&EQUIV($A:$A;$C:$C;0);0;1;1;1)))

ou

=CONCATENER($C1;" ";SI(ESTERREUR(EQUIV($A:$A;$C:$C;0));"";DECALER("C"&EQUIV($A:$A;$C:$C;0);0;1;1;1)))
0
*Remplacez $C1 par $B1 quand il est seul.
*C'est la colonne B qui contient le texte est pas C.

La formule (sur chacune des lignes de la colonne) est dans D ...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
9 nov. 2011 à 09:42
bonjour

en D1 à tirer vers le bas

=SI(NB.SI(A$1:A$6;C1)<1;"";INDEX(B$1:B$6;EQUIV(C1;A$1:A$6;0))&" "&SI(NB.SI(A$1:A$6;C1)=2;INDEX(B$1:B$6;EQUIV(C1;DECALER(A$1:A$6;EQUIV(C1;A$1:A$6;0);0))+EQUIV(C1;A$1:A$6;0));""))


demo
https://www.cjoint.com/?3KjjPbrQ5pt
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
9 nov. 2011 à 09:58
Excusez moi pour la réponse en 2 temps!
variante
=SI(NB.SI(A$1:A$6;C1)<1;"";INDEX(B$1:B$6;EQUIV(C1;A$1:A$6;0)))&" "&SI(NB.SI(A$1:A$6;C1)<2;"";INDEX(B$1:B$6;MAX(SI(A$1:A$6=C1;LIGNE(A$1:A$6)))))

Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule; Excel encadre alors automatiquement la formule par des {} à tirer vers le bas
0