Usando VLOOKUP em uma fórmula de matriz nas planilhas do Google
-
09-06-2019 - |
Pergunta
Efetivamente, quero atribuir pontuações numéricas às notas alfabéticas e somá-las.No Excel, colocando o LOOKUP
função em uma fórmula de matriz funciona:
{=SUM(LOOKUP(grades, scoringarray))}
Com o VLOOKUP
função isso não funciona (só obtém a nota da primeira série).O Planilhas Google não parece ter o LOOKUP
função e VLOOKUP
falha da mesma maneira usando:
=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))
ou
=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))
É possível fazer isso (mas estou com a sintaxe errada)?Você pode sugerir um método que permita fazer o cálculo em uma célula simples como esta, em vez de ocultar as pesquisas em outro lugar e somá-las posteriormente?
Solução 3
Ainda não consigo ver as fórmulas do seu exemplo (apenas valores), mas é exatamente isso que estou tentando fazer em termos de resultado;obviamente já posso fazer isso "ao lado" e somar separadamente - o segredo para mim é fazer isso em uma célula.
Voltei a examiná-lo esta manhã - usando o MATCH
função para a pesquisa funciona em uma fórmula de matriz.Mas então o INDEX
função não.Eu também tentei usá-lo com OFFSET
e INDIRECT
sem sucesso.finalmente, o CHOOSE
A função não parece aceitar um intervalo de células como sua lista para escolher - o intervalo é degradado para um único valor (a primeira célula do intervalo).Deve-se notar também que CHOOSE
A função aceita apenas 30 valores para escolher (de acordo com a documentação).Tudo muito chato.No entanto, agora tenho uma solução funcional em uma célula:usando o CHOOSE
função e listando explicitamente as células de resultado, uma por uma, nos argumentos como este:
=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))
Obviamente, isso não se estende muito bem, mas espero que as tabelas de pesquisa sejam bastante fixas por natureza.Para tabelas de pesquisa maiores, é difícil digitar todas as células individualmente e algumas pessoas podem exceder o limite de 30 células.
Eu certamente receberia uma solução mais elegante!
Outras dicas
Receio que a resposta seja não.Do texto de ajuda emhttp://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=
O verdadeiro poder de ARRAYFORMULA vem quando você pega o resultado de um desses cálculos e o envolve em uma fórmula que aceita argumentos de array ou intervalo:SOMA, MAX, MIN, CONCATENAR,
Como o vlookup leva uma única célula para pesquisar (no primeiro argumento), não acho que você consiga fazê-lo funcionar sem usar um intervalo separado de pesquisas.
Eu sei que este tópico é bastante antigo, mas eu estava lutando com esse mesmo problema há algum tempo.Finalmente encontrei uma solução (bem, Frankenstiened uma juntos).É apenas um pouco mais elegante, mas deve ser capaz de trabalhar com grandes conjuntos de dados sem problemas.
A solução usa o seguinte:
=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))
como substituto da função vlookup.
Espero que isso ajude alguém!
você pode fazer isso facilmente codificando-o na tabela VR:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
{"B", 5};
{"C", 4};
{"D", 3};
{"E", 2};
{"F", 1}}, 2, 0)), ))
ou você pode usar algumas células laterais com regras:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))
alternativas: https://webapps.stackexchange.com/a/123741/186471