Supposons que j'ai des noms dans les cellules B1:B3
et une liste complète de tous les noms A1:A4
, est-il possible pour moi de générer une liste de noms A1:A4
qui n'apparaissent pas dans B1:B3
?
Par exemple, les cellules A1:A4
ont "A", "B", "C", "D", si elles B1:B3
contiennent "A", "C", "D", alors je veux obtenir "B".
J'ai parcouru la liste des fonctions mais je n'ai pas réussi à comprendre comment le faire.
Mise à jour : Avec l'aide de Lance, la formule que j'ai trouvée était:
FILTER(A1:A4, A1:A4<>B1, A1:A4<>B2, A1:A4<>B3)
Cela donne le bon résultat, mais j'ai toujours un problème. Le problème est que mes cellules B1:Bx
peuvent s'étendre. Je gère une équipe sportive et j'utilise un formulaire Google Docs que les gens soumettent, ils sélectionnent leur nom dans une liste de sélection et choisissent un bouton radio "Oui" (je peux jouer) ou "Non" (je suis absent). Ce que je veux réaliser ici est d'afficher dans ma feuille de calcul les personnes qui n'ont pas répondu. L'objectif est de mettre à jour cette liste automatiquement après chaque nouvelle soumission. Malheureusement, lorsque de nouvelles lignes sont remplies dans la feuille de calcul, la formule est foirée. Je ne sais pas s'il y a une solution à cela.
Mise à jour 2 : j'ai trouvé un moyen de contourner le problème. J'ai d'abord copié les cellules d' B1:Bx
une autre région C1:Cx
, puis j'ai utilisé la formule ci-dessus mais contre C1:Cx
. Maintenant, même se B1:Bx
développe, la formule est toujours valide.
la source
Réponses:
WOW, j'allais vous trouver une solution exacte, Google Docs est tellement frustrant. Boucle de script City.
Vous pouvez le faire avec la fonction de feuille de calcul FILTER, votre arrayCondition_1 étant une formule de fonctions qui donne une vraie valeur pour chaque ligne qui n'est pas dupée. J'ai pu voir que la fonction MATCH ne pouvait pas être utilisée.
la source
COUNTIF
compte le nombre de fois que chaque joueur dans la colonneA
apparaît dans la colonneB
et renvoie un tableau des comptes.NOT
convertit les nombres en valeurs booléennes (vrai ou faux), puis prend l'inverse.FILTER
supprime les joueurs qui figuraient dans laB
liste des réponses de la colonne.L'astuce ici est que
NOT
les comptes sont booléens. Si un joueur n'a pas répondu, il apparaîtra 0 fois dans la liste des réponses. S'ils ont répondu, ils apparaîtront 1 ou plusieurs fois (peut-être un joueur essayant de changer sa réponse en soumettant l'enquête une deuxième fois). 0 transtypé versFalse
et tous les autres numéros convertis versTrue
. Donc, les joueurs qui ont répondu à la carteTrue
et ceux qui n'ont pas encore répondu à la carteFalse
.NOT
prend ensuite l'inverse, vous donnant un masque des joueurs qui n'ont pas encore répondu.Cette solution prend en charge une liste croissante de soumissions pouvant inclure des lignes vides ou des soumissions en double. Pour limiter à la plage spécifique décrite dans la question, utilisez:
=FILTER(A1:A4, NOT(COUNTIF(B:B,A1:A4)))
la source
Voici une feuille de calcul montrant comment cela peut être fait facilement:
Définir les opérations dans Google Sheets
L'union est
={setA; setB}
La différence est
=filter(setA, iferror(MATCH(setA, setB, false)))
L'intersection est
=filter(setA; MATCH(setA, setB, false))
Explication
setA
etsetB
peut être nommé plages ou vous pouvez utiliser la notation de plage normale. Les plages nommées rendent cela plus clair.Union est juste une nouvelle gamme faite en juxtaposant les deux gammes.
Intersection ( à côté plus facile) dépend de la recherche d'indices de
setA
danssetB
où ils les sorties et le filtrage Seta par là.La différence est similaire, mais les filtres permettent
setA
de sélectionner uniquement les membres pour lesquels l'indexsetB
n'est pas trouvé.Crédit supplémentaire
L'union avec élimination des doublons est juste setA + (setB-setA) , donc par ce qui précède
la source