Je veux créer une matrice sous forme de feuille de calcul de données en colonnes

0

J'ai une feuille de travail qui ressemble à ceci:
feuille de travail de données

Je veux (automatiquement) créer une matrice qui ressemble à ceci:

feuille de calcul de la matrice résultante

Quel est le meilleur moyen d'y parvenir?

Susan McCoy
la source
Qu'est-ce qui devrait être fait automatiquement? La solution ultime est une macro, mais si vous avez déjà les listes et que vous avez besoin de mettre seulement Xs, vous pouvez le résoudre aussi avec des formules.
Máté Juhász
La feuille de calcul "data" va être variable, j'y ajouterai des données au fur et à mesure que je les obtiens ... mais j'aimerais générer automatiquement la matrice à partir des données afin de ne pas avoir à la construire. Je ne sais pas comment écrire une macro et je serais très reconnaissant de l'aide.
Susan McCoy

Réponses:

1

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 SEARCHfonction, 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.»).  SEARCHrenvoie 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, SEARCHretourne 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 xsi 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:

matrice

Scott
la source
Vous devez toujours créer les en-têtes pour chaque propriété médicale, maintenez-les cohérents. Néanmoins, je l’aime bien comme une solution purement Excel, plutôt que d’utiliser un outil (CLI) pour analyser un fichier CSV en en créant un autre, comme j’avais été tenté de le suggérer à l’origine.
Gypsy Spellweaver