Utilisation de RECHERCHEV dans une formule matricielle sur des feuilles de calcul Google

StackOverflow https://stackoverflow.com/questions/27774

  •  09-06-2019
  •  | 
  •  

Question

En fait, je veux attribuer des scores numériques aux notes alphabétiques et les additionner.Dans Excel, mettre le LOOKUP la fonction dans une formule matricielle fonctionne :

{=SUM(LOOKUP(grades, scoringarray))}

Avec le VLOOKUP fonction, cela ne fonctionne pas (obtient uniquement le score de la première année).Google Spreadsheets ne semble pas avoir le LOOKUP fonction et VLOOKUP échoue de la même manière en utilisant :

=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))

ou

=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))

Est-il possible de faire cela (mais j'ai une mauvaise syntaxe) ?Pouvez-vous suggérer une méthode qui permet d'avoir le calcul dans une cellule simple comme celle-ci plutôt que de cacher les recherches ailleurs et de les additionner ensuite ?

Était-ce utile?

La solution 3

Je ne vois toujours pas les formules dans votre exemple (juste les valeurs), mais c'est exactement ce que j'essaie de faire en termes de résultat ;évidemment, je peux déjà le faire "à côté" et additionner séparément - la clé pour moi est de le faire dans une seule cellule.

Je l'ai revu ce matin - en utilisant le MATCH la fonction de recherche fonctionne dans une formule matricielle.Mais alors le INDEX la fonction ne le fait pas.J'ai aussi essayé de l'utiliser avec OFFSET et INDIRECT sans succès.Finalement, le CHOOSE la fonction ne semble pas accepter une plage de cellules comme liste parmi laquelle choisir - la plage se dégrade en une seule valeur (la première cellule de la plage).Il convient également de noter que le CHOOSE la fonction n'accepte que 30 valeurs parmi lesquelles choisir (selon la documentation).Tout cela est très ennuyeux.Cependant, j'ai maintenant une solution fonctionnelle dans une cellule :en utilisant le CHOOSE fonction et listant explicitement les cellules de résultat une par une dans les arguments comme ceci :

=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
                                     Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))

Évidemment, cela ne s'étend pas très bien, mais j'espère que les tables de recherche sont par nature assez fixes.Pour les tables de recherche plus volumineuses, il est difficile de saisir toutes les cellules individuellement et certaines personnes peuvent dépasser la limite de 30 cellules.

J'apprécierais certainement une solution plus élégante !

Autres conseils

J'ai bien peur de penser que la réponse est non.À partir du texte d'aide surhttp://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=

La vraie puissance d'ARRAYFORMULA vient lorsque vous prenez le résultat d'un de ces calculs et l'enveloppez dans une formule qui prend des arguments de tableau ou de plage :SOMME, MAX, MIN, CONCATENER,

Comme vlookup prend une seule cellule pour rechercher (dans le premier argument), je ne pense pas que vous puissiez le faire fonctionner sans utiliser une plage distincte de recherches.

Google Spreadsheets ne semble pas avoir la fonction LOOKUP

Vraisemblablement pas à l'époque, mais c'est le cas maintenant :

SO27774 example

grades Feuille1!A2:A4
scoringarray Feuille1!A2:B4

Je sais que ce fil est assez ancien, mais je suis aux prises avec ce même problème depuis un certain temps.J'ai finalement trouvé une solution (enfin, Frankenstiened une ensemble).Il est à peine plus élégant, mais devrait pouvoir fonctionner sans problème avec de grands ensembles de données.

La solution utilise les éléments suivants :

=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))

comme substitut de la fonction vlookup.

J'espère que ça aidera quelqu'un!

vous pouvez le faire facilement comme ceci en le codant en dur dans la table VR :

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
                                         {"B", 5};
                                         {"C", 4};
                                         {"D", 3};
                                         {"E", 2};
                                         {"F", 1}}, 2, 0)), ))

0

ou vous pouvez utiliser des cellules latérales avec des règles :

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))

6


alternatives : https://webapps.stackexchange.com/a/123741/186471

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top