Comment effectuer une simple opération de définition dans la feuille de calcul Google Documents?

10

Supposons que j'ai des noms dans les cellules B1:B3et une liste complète de tous les noms A1:A4, est-il possible pour moi de générer une liste de noms A1:A4qui n'apparaissent pas dans B1:B3?

Par exemple, les cellules A1:A4ont "A", "B", "C", "D", si elles B1:B3contiennent "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:Bxpeuvent 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:Bxune autre région C1:Cx, puis j'ai utilisé la formule ci-dessus mais contre C1:Cx. Maintenant, même se B1:Bxdéveloppe, la formule est toujours valide.

grokus
la source
La solution au problème en expansion consiste à utiliser une plage nommée. Il faudra probablement un peu de travail pour obtenir le filtre juste à droite cependant.
Lance Roberts
@Lance, j'ai trouvé une solution de contournement et mis à jour mon message à nouveau. Merci.
grokus
1
Grande question, je l'ai trouvée en cherchant moi-même cette réponse. Votre solution de contournement est assez bonne, mais je pense que j'ai finalement obtenu exactement ce que vous cherchiez. Découvrez ma réponse ci-dessous.
Anthony DiSanti

Réponses:

5

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.

Lance Roberts
la source
1
J'ai trouvé que l'utilisation de Chrome est bien meilleure lorsque vous traitez avec Google Docs.
grokus
Aujourd'hui, c'est fou pour moi, mais si je me souviens, je vais faire un crack à cette semaine prochaine (si la réponse n'a pas été trouvée d'ici là).
Lance Roberts
ça va, j'ai pu utiliser FILTER pour obtenir les résultats que je voulais. Merci.
grokus
@grokus, très bien, vous devriez publier la formule que vous avez utilisée pour référence future.
Lance Roberts
J'ai mis à jour mon message d'origine.
grokus
4
=FILTER(A:A, NOT(COUNTIF(B:B, A:A)))

COUNTIFcompte le nombre de fois que chaque joueur dans la colonne Aapparaît dans la colonne Bet renvoie un tableau des comptes.

NOT convertit les nombres en valeurs booléennes (vrai ou faux), puis prend l'inverse.

FILTERsupprime les joueurs qui figuraient dans la Bliste des réponses de la colonne.

L'astuce ici est que NOTles 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é vers Falseet tous les autres numéros convertis vers True. Donc, les joueurs qui ont répondu à la carte Trueet ceux qui n'ont pas encore répondu à la carte False. NOTprend 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)))

Anthony DiSanti
la source
genius 20charlimit
Fadeway
0

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 setAet setBpeut ê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 setAdans setBoù ils les sorties et le filtrage Seta par là.

La différence est similaire, mais les filtres permettent setAde sélectionner uniquement les membres pour lesquels l'index setBn'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

={setA;filter(setB, iserror(MATCH(setB,setA,false)))}
marc meyer
la source