Utilizzo di CERCA.VERT in una formula di matrice su fogli di calcolo Google
-
09-06-2019 - |
Domanda
In effetti voglio dare punteggi numerici ai voti alfabetici e sommarli.In Excel, inserendo il file LOOKUP
funzione in una formula di matrice funziona:
{=SUM(LOOKUP(grades, scoringarray))}
Con il VLOOKUP
funzione questa non funziona (ottiene solo il punteggio della prima elementare).I fogli di calcolo Google non sembrano avere il file LOOKUP
funzione e VLOOKUP
fallisce allo stesso modo utilizzando:
=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))
O
=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))
È possibile farlo (ma ho sbagliato la sintassi)?Potete suggerire un metodo che consenta di avere il calcolo in una cella semplice come questa invece di nascondere le ricerche da qualche altra parte e sommarle successivamente?
Soluzione 3
Non riesco ancora a vedere le formule nel tuo esempio (solo valori), ma è esattamente quello che sto cercando di fare in termini di risultato;ovviamente posso già farlo "a lato" e sommare separatamente: la chiave per me è farlo in una cella.
L'ho guardato di nuovo stamattina, usando il file MATCH
la funzione per la ricerca funziona in una formula di matrice.Ma poi il INDEX
la funzione no.Ho anche provato a usarlo con OFFSET
E INDIRECT
senza successo.Infine, il CHOOSE
la funzione non sembra accettare un intervallo di celle come elenco da cui scegliere: l'intervallo si riduce a un singolo valore (la prima cella dell'intervallo).Va inoltre sottolineato che il CHOOSE
la funzione accetta solo 30 valori tra cui scegliere (secondo la documentazione).Tutto molto fastidioso.Tuttavia, ora ho una soluzione funzionante in una cella:usando il CHOOSE
funzione ed elencando esplicitamente le celle del risultato una per una negli argomenti come questo:
=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))
Ovviamente questo non si estende molto bene, ma si spera che le tabelle di ricerca siano per natura abbastanza fisse.Per tabelle di ricerca più grandi è complicato digitare tutte le celle individualmente e alcune persone potrebbero superare il limite di 30 celle.
Avrei sicuramente gradito una soluzione più elegante!
Altri suggerimenti
Temo di pensare che la risposta sia no.Dal testo di aiuto in poihttp://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=
Il vero potere di ARRAYFORMULA arriva quando prendi il risultato di uno di questi calcoli e lo avvolgi in una formula che accetta argomenti di matrice o intervallo:SOMMA, MAX, MIN, CONCATENA,
Poiché vlookup richiede una singola cella per la ricerca (nel primo argomento), non penso che tu possa farlo funzionare, senza utilizzare un intervallo separato di ricerche.
So che il thread è piuttosto vecchio, ma era da tempo che lottavo con lo stesso problema.Alla fine ho trovato una soluzione (beh, Frankenstiened insieme).È solo leggermente più elegante, ma dovrebbe essere in grado di lavorare senza problemi con set di dati di grandi dimensioni.
La soluzione utilizza quanto segue:
=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))
come surrogato della funzione vlookup.
Spero che questo aiuti qualcuno!
puoi farlo facilmente in questo modo codificandolo nella tabella VR:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
{"B", 5};
{"C", 4};
{"D", 3};
{"E", 2};
{"F", 1}}, 2, 0)), ))
oppure puoi utilizzare alcune celle laterali con regole:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))
alternative: https://webapps.stackexchange.com/a/123741/186471