Comment réorganiser 2 colonnes de données avec des doublons dans une colonne

1

Désolé si le titre est déroutant. J'ai passé presque toute la nuit à essayer de résoudre ce problème et je ne sais pas comment le formuler. Toute aide serait appréciée.

J'ai une feuille de calcul avec des noms dans la colonne A et des numéros d'identification dans la colonne B. Elle ressemble à ceci

Sally     1004
Sally     1005
Sally     1006
Robert    1007
Robert    1008

ect.

J'ai une autre feuille de calcul qui, en raison de certaines circonstances, je ne peux légalement filtrer d'aucune façon qui porte des noms comme celui-ci.

Sally
Sally
Robert
Robert
Robert

Ils sont tous alphabétiques, mais comme vous pouvez le constater dans le cas de Sally, elle apparaît plus de fois dans le premier cas que dans la deuxième feuille, ce qui est très bien. Cependant, Robert apparaît plus souvent dans la deuxième feuille que dans la première et j'ai besoin de cela pour renvoyer une sorte d'erreur. J'ai également besoin que Sheet2 ait des numéros d'identification pour qu'ils apparaissent. C'est l'objectif final

Sally     1004
Sally     1005
Robert    1007
Robert    1008
Robert    #N/A           (or any other error)

J'ai passé des heures à essayer de trouver une formule matricielle au travail et je n'ai pas réussi. Si vous avez une idée de la façon dont je devrais procéder, je l'apprécierais beaucoup.

Zach Shaner
la source

Réponses:

0

Utilisez cette formule:

=INDEX(Table1[ID],SMALL(IF(A2=Table1[name],ROW(Table1[name])-ROW(Table1[[#Headers],[name]]),10^9),COUNTIF(Sheet2!$A$1:A2,A2)))

Bien sûr, c'est aussi une formule matricielle.

  • IF(A2=Table1[name],ROW(Table1[name])-ROW(Table1[[#Headers],[name]]),10^9)
    • renvoie le numéro de ligne pour les lignes de la table source contenant le nom réel
      (corrigé par le numéro de ligne de l'en-tête de la table afin de fonctionner correctement dans la fonction d'index)
    • retourne 10^9pour les autres (juste pour avoir un grand nombre pas une SMALLfonction déroutante , peut ""- être que ça marcherait aussi)
  • COUNTIF(Sheet2!$A$1:A2,A2) - compte le nombre de noms au-dessus de la ligne actuelle
  • SMALL(IF(...),10^9),COUNTIF(...)) - retourne le numéro de ligne le plus petit (corrigé) suivant
  • =INDEX(Table1[ID],SMALL(...)) - retourne l'ID

Pour une meilleure lisibilité de la formule, j'ai converti votre première plage en table, bien sûr, vous pouvez également utiliser des adresses.

entrez la description de l'image ici

Máté Juhász
la source
Pouvez-vous expliquer cela s'il vous plaît?
Chris Rogers
Ceci est exactement ce que je cherchais. C'est littéralement un épargnant de nuit. Merci
Zach Shaner