J'ai une feuille de travail qui ressemble à ceci:
Je veux (automatiquement) créer une matrice qui ressemble à ceci:
Quel est le meilleur moyen d'y parvenir?
J'ai une feuille de travail qui ressemble à ceci:
Je veux (automatiquement) créer une matrice qui ressemble à ceci:
Quel est le meilleur moyen d'y parvenir?
Réponses:
C'est facile à faire avec des formules. Pour plus de simplicité, j'ai placé la matrice dans les colonnes C
- N
(et au-delà) de la feuille de calcul principale; le déplacer sur une autre feuille (page / onglet) est trivial.
C'est un travail pour la SEARCH
fonction, qui cherche une chaîne dans une autre, comme "anti" dans "frantic". Nous allons l'utiliser pour rechercher chaque propriété individuelle («analgésique», «antibactérien», etc.) dans la liste des propriétés («antiseptique, antifongique, analgésique, antitumoral, etc.»).
SEARCH
renvoie la position de la sous-chaîne - par exemple, SEARCH("anti", "frantic")
renvoie 3, car «a» est le troisième caractère de «frantic». On s'en fiche nous nous soucions du fait que, si la première chaîne est présente dans la seconde, SEARCH
retourne un nombre, sinon elle retourne une erreur. Donc, si nous mettons ISERROR(SEARCH(C$1, $B2))
dans la cellule C2
, il retourne FALSE si «antiseptique» ( C1
) est dans la liste des propriétés pour Lavender ( B2
) et TRUE sinon. Alors
=IF(ISERROR(SEARCH(C$1, $B2)), "", "x")
s'affiche x
si la propriété est sur la liste et vide si ce n'est pas le cas.
Mais c'est une simplification excessive. Si une liste de propriétés inclut «antibactérien (puissant)», la recherche sur «antibactérien» aboutira. Votre illustration de la matrice souhaitée suggère que vous ne voulez pas que cela se produise. Il existe une astuce standard pour cela: recherchez «, antibactérien» (avec des virgules au début et à la fin), pour trouver «antibactérien» en tant qu'entrée complète dans la liste. Mais cela ne correspondra pas si «antibactérien» est la première ou la dernière entrée de la liste - nous ajoutons donc des virgules au début et à la fin de la liste.
Alors, mettez =IF(ISERROR(SEARCH(", "&C$1&",", ", "&$B2&",")), "", "x")
dans la cellule C2
, et faites glisser vers le bas et à droite:
X
s, vous pouvez le résoudre aussi avec des formules.