Je suis novice dans les feuilles de calcul, alors j'espère que vous me pardonnerez si je pose une question super évidente.
Est-il possible d'utiliser des balises dans Excel / Google Spreadsheet? Je crée une feuille de calcul pour enregistrer tous les articles et livres que je lis. Dis que je lis "Moi, Claudius". Je veux lui donner ces tags: histoire, fiction, biographie, handicap, politique, drame. Ensuite, si je veux afficher tous les articles / livres étiquetés avec "politique", je peux peut-être rechercher / afficher / pivoter avec cette étiquette.
De préférence, les balises devraient toutes être dans une seule cellule, chaque mot étant séparé par une virgule. Si chaque mot était dans sa propre cellule, cela rendrait le tableau vraiment désordonné, je pense.
Je suis également ouvert à d'autres solutions d'étiquetage.
Merci!
Réponses:
Pour autant que je sache, il n'y a pas de fonctionnalités intégrées qui peuvent analyser et résumer les balises séparées par des virgules dans Excel. Vous pouvez bien sûr créer votre propre solution avec des fonctions de feuille de calcul et un peu de VBA. Voici une solution rapide pour ce faire.
Étape 1 : appuyez sur Alt+ F11pour ouvrir le volet de l'éditeur VBA dans Excel. Insérez un nouveau module et collez-le dans ce code pour une fonction personnalisée.
Cette fonction vous permettra de créer des listes séparées par des virgules pour résumer les données de balise dont vous disposez.
Étape 2 : Dans une feuille de calcul, entrez dans une cellule (H2 dans l'exemple ci-dessous) la balise que vous souhaitez rechercher. Dans la cellule de droite, entrez la formule suivante en appuyant sur Ctrl+ Shift+ Enter.
En appuyant sur Ctrl+ Shift+ Enter, vous entrez la formule sous forme de formule matricielle. Il apparaîtra entouré par
{...}
dans la barre de formule. Notez que dans la formule se$B$2:$B$6
trouve la plage contenant toutes les balises des éléments répertoriés dans$A$2:$A$6
.EDIT:
Si cela ne vous dérange pas que vos correspondances soient répertoriées dans une colonne plutôt que dans une liste dans une cellule, vous pouvez renvoyer des correspondances pour les balises en utilisant uniquement les fonctions de feuille de calcul.
Où vos titres sont
Column A
, les balises sontColumn B
, et l'étiquette que vous recherchez est dansH2
, vous pouvez utiliser la suivante formule de tableau dansI2
et remplir aussi loin que vous avez besoin:La formule fonctionne en formant d'abord un tableau de nombres selon que les balises de chaque ligne contiennent le terme de recherche. Si une correspondance est trouvée, le numéro de ligne est stocké dans le tableau. S'il n'est pas trouvé, 2000000 est stocké dans le tableau. Ensuite, la
SMALL(<array>,ROW()-1)
partie de la formule renvoie laROW()-1
valeur la plus petite du tableau. Ensuite, cette valeur est passée comme argument d'index à laINDEX()
fonction, où la valeur à cet index dans le tableau de titres est retournée. Si un nombre supérieur au nombre de lignes du tableau de titres est passéINDEX()
en argument, une erreur est renvoyée. Étant donné que 2000000 est passé comme argument lorsqu'aucune correspondance n'est trouvée, une erreur est renvoyée. LaIFERROR()
fonction retourne alors""
dans ce cas.Il est important de comprendre comment
ROW()
est utilisé dans cette formule. Si vous souhaitez afficher votre liste de résultats commençant dans une ligne différente, vous devrez ajuster le deuxième argument de laSMALL()
fonction afin qu'il renvoie la première plus petite valeur du tableau. Par exemple, si votre liste de résultats commence dans la ligne 1 au lieu de la ligne 2, vous utiliseriez à laSMALL(...,ROW())
place deSMALL(...,ROW()-1)
.De plus, si votre liste de titres et de balises ne commence pas dans la ligne 1, vous devrez également ajuster la formule. Le deuxième argument de la
IF()
fonction doit être ajusté pour qu'une correspondance dans la première ligne de vos données renvoie 1. Par exemple, si votre liste de titres commence dans la ligne 2 au lieu de la ligne 1, vous aurez besoin de la formule à inclure à laIF(...,ROW($A$2:$A$7)-1,...)
place deIF(...,ROW($A$1:$A$6),...)
.la source
CONCATENATE
fonction dans Excel ne peut pas prendre un tableau comme argument (elle lit uniquement le premier élément du tableau si vous l'essayez). La fonction VBA est conçue pour créer des listes séparées par des virgules à partir d'un tableau de valeurs.Tout en faisant cela par programme fonctionne bien dans certains cas, j'ai trouvé une approche manuelle a fonctionné pour moi. En utilisant des colonnes pour les balises, vous pouvez facilement baliser un élément de ligne en entrant un 0 dans la colonne. Vous avez alors une ligne et entrez 1 dans chacune des colonnes de balises pour cette ligne (vous pouvez colorer cette ligne). Ensuite, lorsque vous triez selon l'une des balises, la ligne 1s (bleue) agit comme un séparateur. Entre vos résultats filtrés (0s) et tout le reste (_).
Cela présente quelques avantages. 1. Vous n'avez pas besoin de taper votre tag à chaque fois. 2. Vous pouvez facilement croiser les références pour vérifier si vous avez des articles en double ou similaires qui peuvent être réduits à un.
la source
Une autre idée:
Utilisez la fonctionnalité de filtre intégrée. Filtrez par la colonne Balises, puis vous pouvez rechercher des lignes contenant une balise donnée.
Une rangée avec la liste des tags: comédie, horreur, romance
s'afficherait lors de la recherche de l'une de ces trois balises.
la source
Mon approche non VBA consiste à répertorier les balises dans une colonne (disons la colonne H), en séparant les éléments par des virgules. À partir de là, j'utilise une combinaison de "Text to Columns" et "Remove Duplicates" pour obtenir ma liste de balises. Je copie au-delà de cela dans la ligne d'en-tête de ma feuille principale (dans ce cas, en commençant dans la colonne L. Ensuite, dans chaque cellule sous les en-têtes de balises individuelles, entrez ce qui suit:
Cela donne le meilleur des deux mondes - la colonne des balises (H) est facile à lire pour les gens; les colonnes de balises individuelles (avec leurs 0 et 1) sont faciles à lire pour l'ordinateur. C'est dynamique si vous restez dans l'ensemble de balises donné; sinon, vous devez ajouter votre nouvelle balise à la ligne d'en-tête, puis recopier vos formules.
De là, les tableaux croisés dynamiques sont votre ami.
la source
Je ne sais pas exactement comment vous souhaitez utiliser les balises. Mais dans Google Sheets, vous pouvez utiliser la fonction SPLIT () pour diviser une chaîne de balises (délimitées par des espaces, des virgules ou tout ce que vous voulez) en plusieurs autres cellules, et je suis sûr que même Excel a une fonction qui peut rechercher un cellule pour une balise.
la source