web-dev-qa-db-fra.com

Excel Advanced filtrant plusieurs colonnes avec plusieurs combinaisons de données acceptables

J'ai un grand ensemble de données avec 4 colonnes d'intérêt contenant toutes du texte, à savoir des mouvements pokemon. Les colonnes "déplacer 1" à "déplacer 4" contiennent chacune un déplacement différent, et chaque ligne diffère dans la combinaison . 

"       A        |   B         |   C         |   D         |   E".
" 1    Pokemon   |   Move 1    |    Move 2   |   Move 3    |   Move 4".
" 2    Igglybuff |   Tackle    |   Tailwhip  |   Sing      |   Attract".
" 3    Wooper    |   Growl     |   Tackle    |   Rain Dance|   Dig".

~ 1000 de plus

Mon problème est le suivant: Je souhaite filtrer cet ensemble de données pour les lignes (pokemon) contenant une certaine combinaison de déplacements dans une liste. par exemple. Je veux trouver quels pokemon ont à la fois "Growl" et "Tackle". Ces mouvements peuvent apparaître dans les mouvements 1 à 4 (l'ordre des mouvements est sans importance) .__ Comment procéder pour filtrer pour obtenir un tel résultat. J'ai des situations similaires dans lesquelles je souhaiterais rechercher une combinaison de 3 ou 4 coups dont l'ordre spécifique n'est pas important ou rechercher un pokémon spécifique possédant une combinaison spécifique de coups.

J'ai essayé d'utiliser des fonctions telles que COUNTIF sans succès. Les aides/idées sont très appréciées.

8
Angel

Vous pouvez envisager plusieurs options de filtrage avancé dans Excel:

Option 1 - Filtres avancés

Les filtres avancés vous permettent d'interroger plusieurs critères (c'est ce dont vous avez besoin). Vous pouvez également le faire facilement autant de fois que vous le souhaitez pour générer les jeux de données finaux à l'aide de chaque filtre. Voici un lien vers la section des filtres avancés pour Microsoft Excel 2010, qui est pratiquement identique ici à 2007 . Ce serait un bon endroit pour commencer si vous voulez sortir des simples formules de base. 

Si vous suivez cette voie, suivez les instructions sur le site en ce qui concerne les étapes:

  • Insérez les divers critères que vous avez sélectionnés dans les premières lignes de votre feuille de calcul et spécifiez ces lignes dans la plage de liste.

    • Définissez la plage de critères sur l'emplacement contenant toutes vos données sur une seule feuille de calcul.

    • Exécutez le filtre et examinez les données obtenues. Vous pouvez facilement compter sur le nombre d'enregistrements dans cet ensemble de données réduit.

enter image description here

Option 2 - Tableaux croisés dynamiques

Une autre option que vous pourriez envisager ici serait d'utiliser des tableaux croisés dynamiques. Les tableaux croisés dynamiques et les tableaux croisés dynamiques ne sont que des outils phénoménaux que j’utilise au travail tous les jours pour accomplir exactement ce que vous recherchez.

Option 3 - Utilisation de Visual Basic

Une troisième option consiste à utiliser Visual Basic Code pour écrire une solution. Cela vous donnerait un contrôle parfait, car vous pourriez spécifier exactement les plages à examiner pour chacune des conditions. Malheureusement, vous auriez besoin de comprendre le code VB pour utiliser cette solution. Il existe d'excellentes ressources en ligne disponibles qui peuvent vous aider.

6
Nathaniel Payne
=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0)) > 0

renverra VRAI si l’une des valeurs comprises dans la plage B2: E2 (déplacements 1 à 4) se trouve dans la plage définie par la liste de déplacements. Vous souhaitez utiliser une plage nommée afin de pouvoir facilement copier cette formule pour toutes vos milliers de lignes.

Si vous supprimez la dernière partie qui vérifie si la valeur COUNT() est supérieure à zéro, vous obtenez:

=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0))

qui renverra le nombre de coups que le Pokémon a obtenu et qui correspond à un coup dans la liste des coups.

MATCH() prend trois arguments: une valeur de recherche, la plage de recherche et le type de correspondance. Je ne comprends pas très bien pourquoi, mais encapsuler cette partie de la formule dans INDEX() semble vous permettre d'utiliser un tableau pour le premier argument. Peut-être que quelqu'un ici peut fournir une meilleure explication. 

Dans tous les cas, les formules ci-dessus semblent résoudre le problème.

 enter image description here

Enfin, si vous recherchez seulement quelques déplacements, au lieu d'utiliser une formule déroutante et une plage nommée comme ci-dessus, vous pouvez créer une colonne pour chaque déplacement que vous souhaitez vérifier, par exemple. "Est-ce que Growl?" et "A Tackle?". Il vous suffirait alors d'utiliser =COUNTIF(B2:E2, "Tackle") et =COUNTIF(B2:E2, "Growl"). Vous pouvez ensuite créer une autre colonne qui additionne ces colonnes et filtrer les valeurs nulles pour afficher uniquement les Pokémon qui ont Tackle ou Growl.

J'ai regardé ces deux pages en cherchant comment accomplir cela:

  1. https://www.excelforum.com/Excel-general/786407-find-if-any-value-on-list-exists-on-another.html
  2. https://www.deskbright.com/Excel/using-index-match/
1
Tim