J'ai la formule suivante dans ma colonne B: B
=VLOOKUP(A1;'mySheet'!$A:$B;2;FALSE)
Il affiche en B: B les valeurs trouvées dans la feuille de calcul! B: B où A: A = mySheet! A: A. Ça fonctionne bien. Maintenant, j'aimerais aussi avoir la troisième colonne. Cela fonctionne si j'ajoute la formule suivante à toute la colonne C: C:
=VLOOKUP(A1;'mySheet'!$A:$C;3;FALSE)
Cependant, je travaille avec plus de 100 000 lignes et environ 40 colonnes. Je ne veux pas faire 100k * 40 * VLOOKUP, je voudrais seulement le faire 100k et ne pas avoir à le multiplier par toutes les colonnes. Existe-t-il un moyen (avec des formules matricielles peut-être) de ne faire que VLOOKUP une fois par ligne pour obtenir toutes les colonnes dont j'ai besoin?
exemple de données
ID|Name
-------
1|AB
2|CB
3|DF
4|EF
ID|Column 1|Column 2
--------------------
1|somedata|whatever1
4|somedate|whatever2
3|somedaty|whatever3
Je voudrais obtenir:
ID|Name|Column 1|Column 2
-------------------------
1|AB |somedata|whatever1
2|CB | |
3|DF |somedaty|whatever2
4|EF |somedate|whatever3
INDEX fonctionne rapidement que VLOOKUP, je vous recommande de l'utiliser. Cela réduira la tension que beaucoup de vlookups mettraient sur votre système.
Commencez par trouver la ligne contenant ce dont vous avez besoin dans une colonne d'assistance avec MATCH:
=MATCH(A1,'mySheet'!$A:$A,0)
Ensuite, un INDEX utilisant ce numéro, que vous pouvez faire glisser et remplir toutes vos colonnes avec:
=INDEX('mySheet'!B:B,$B1)
Votre sortie s'apparenterait à:
ID|Name|Match |Column 1 |Column 2
-------------------------
1|AB |Match1|IndexCol1|IndexCol2
2|CD |Match2|IndexCol1|IndexCol2
3|EF |Match3|IndexCol1|IndexCol2
Également! Je recommanderais de définir ces plages pour couvrir les données plutôt que de faire référence à la colonne entière pour des gains de vitesse supplémentaires, par exemple
=INDEX('mySheet'!B1:B100000,$B1)
Je réfléchissais davantage à votre problème et si vous pouviez contrôler les données que vous consultez, j'ai une autre suggestion que vous pourriez essayer.
Dans 'mysheet', où les données brutes sont conservées, ajoutez une nouvelle colonne qui concatène chaque colonne dans une cellule, avec une sorte de diviseur unique ne figurant pas dans vos données:
=B1&"+"&C1&"+"&D1&"+"&E1 etc...
Ensuite, vous pouvez créer un VLOOKUP ou un INDEX/MATCH pour chaque ligne, au lieu de 40.
Une fois que vous l'avez dans votre nouvelle feuille, vous pouvez fractionner les résultats.
Fractionnement sans formules
Copiez/collez les résultats des formules de recherche en tant que Values dans la colonne suivante.
Sélectionnez cette colonne et, dans l'onglet Données de votre ruban, sélectionnez Texte en colonnes .
Laissez-le sur Délimité , appuyez sur Suivant . Décochez Tab , cochez Autre , et entrez votre délimètre (+ dans mon exemple).
Cliquez sur Terminer .
Fractionner avec des formules
Utilisez =FIND()
pour localiser chaque délimiteur et =MID()
pour extraire le texte entre chaque ensemble de délimètres, en utilisant le délimiteur précédent comme numéro de départ.
Certainement la plus complexe des deux méthodes.
Si je comprends bien, je commencerais par utiliser =VLOOKUP(A1;'mySheet'!$A:LastColumn;COLUMN(B1);FALSE)
. De cette façon, votre référence de colonne se déplacera lorsque vous faites glisser votre Vlookup vers la droite.
Aucune formule.Aucune sortie. Donc, il ne peut y avoir aucun moyen d'appliquer une formule sur une colonne uniquement et de passer aux autres ... Un autre moyen envisageable est de mettre une formule dans une cellule, d'utiliser intelligemment les signes $ et de les déplacer dans toutes les cellules d'un giffy sans avoir à mettre vlookup 40 fois.
Vlookup a 4 codes à saisir
1 - Valeur de recherche. Utilisez ce $A1
(mettez $ sur A et non 1)
2 - Données source- Mettez $
signes everywhere
3 - Index de colonnes no. Juste au-dessus de vos données, dans la 1ère ligne, ajoutez une ligne vide.Mettez les valeurs 1 dans A1, 2 dans B1, 3 dans C1, etc. Maintenant dans la formule, au lieu de mettre manuellement "2" ou "3" Donnez une référence à ces cellules. Mettez $ sur Numberal et non sur la colonne (B$1
).
4 - Type false
ou 0
Ensuite, faites-le glisser partout.
false
ou 0