web-dev-qa-db-fra.com

Liste de validation des données Excel à l'aide d'une formule avec filtrage

J'ai le classeur suivant:

Feuille de travail Comptes:

Accounts worksheet

Feuille de travail Messages:

Posts worksheet

Je voudrais savoir s'il est possible de définir la validation des données de type Liste sur toute la colonne B dans la feuille Posts en utilisant la formule, de sorte que la fenêtre de validation des données affiche uniquement le compte Ids de Accounts feuille qui Website correspond à la colonne Website colonne d'une ligne sélectionnée dans Posts feuille et qui ont une valeur Actif dans la colonne Status?

Dans les mots SQL-ish ou LINQ-ish:

SELECT ID FROM Accounts WHERE Website = @ SelectedPostRow.Website AND Status = Active

Les marques sur la deuxième image montrent quelles valeurs doivent être affichées dans une liste déroulante.

13
Stipo

Oui, vous pouvez le faire, mais cela nécessite une configuration de support.

Tout d'abord pour chacune des options de votre site Web, vous devez créer une plage nommée pour les options qui figureraient dans la liste déroulante que vous souhaitez créer.

Pour ce faire, sélectionnez simplement la liste des cellules et cliquez avec le bouton droit de la souris, puis choisissez Nommer une plage

Ensuite, vous devez créer une liste de recherche pour les noms de votre site Web avec les possibilités de plage nommées

Ensuite, dans votre source de validation des données, utilisez un forum comme celui-ci:

=indirect(vlookup(a1,$i$8:$j$13,2,false))

puis whala, la liste déroulante change en fonction de la valeur du site Web.

Maintenant, si vous devez également automatiser les bits de plage nommés, vous pouvez les modifier pour englober des colonnes entières, puis utiliser un tableau croisé dynamique pour extraire les données. Aurait juste besoin d'un pivot indépendant pour chaque option de site Web.

Chaque fois que vous récupérez de nouvelles données, vous devrez actualiser les pivots, mais cela fonctionnera.

3
Alan Waage

Ce problème nécessite un peu de préparation. Dans la même feuille, ou dans une autre, copiez vos données (ou ajoutez les cellules pertinentes)

Dans la colonne A, vous avez un numéro qui pourrait être classé. Je l'ai obtenu avec (cellule A2):

= IF (C2 = $ J $ 2,1,0) * IF (E2 = "Active", 1,0) * ROW ()

Dans la colonne B, classez le nombre et excluez les lignes indésirables (B2):

= SI (A2 = 0,0, RANG (A2, A: A))

Ensuite, vous pouvez RECHERCHER dans la colonne H, en utilisant une énumération dans la colonne G (entrée manuellement). La formule pour H1:

= IFERROR (RECHERCHEV (G2, $ B $ 2: $ D $ 9,3, FAUX), "")

Vous pouvez maintenant définir votre validation sur la base de la colonne H

screenshot

PS: il pourrait y avoir de petites erreurs dans les formules car je les ai traduites de l'italien et je ne peux pas tester en anglais.

3
momobo