Использование ВПР в формуле массива в электронных таблицах Google
-
09-06-2019 - |
Вопрос
По сути, я хочу присвоить числовые баллы алфавитным оценкам и суммировать их.В Excel, поместив LOOKUP
функция в формуле массива работает:
{=SUM(LOOKUP(grades, scoringarray))}
С помощью VLOOKUP
функция эта не работает (получает оценку только за первый класс).В Google Spreadsheets, похоже, нет LOOKUP
функция и VLOOKUP
выходит из строя таким же образом, используя:
=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))
или
=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))
Возможно ли это сделать (но у меня неправильный синтаксис)?Можете ли вы предложить метод, который позволяет выполнять вычисления в одной простой ячейке, подобной этой, вместо того, чтобы скрывать поисковые запросы где-то в другом месте и суммировать их впоследствии?
Решение 3
Я все еще не вижу формул в вашем примере (только значения), но это именно то, что я пытаюсь сделать с точки зрения результата;очевидно, что я уже могу делать это "сбоку" и суммировать отдельно - главное для меня - делать это в одной ячейке.
Сегодня утром я просмотрел его еще раз - используя MATCH
функция для поиска работает в формуле массива.Но тогда INDEX
функция этого не делает.Я также пробовал использовать его с OFFSET
и INDIRECT
безуспешно.Наконец, CHOOSE
функция, похоже, не принимает диапазон ячеек в качестве списка для выбора - диапазон уменьшается до одного значения (первая ячейка в диапазоне).Следует также отметить, что CHOOSE
функция принимает только 30 значений на выбор (согласно документации).Все это очень раздражает.Тем не менее, теперь у меня есть рабочее решение в одной ячейке:используя CHOOSE
функция и явное перечисление результирующих ячеек одну за другой в аргументах следующим образом:
=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))
Очевидно, что это расширяется не очень хорошо, но, надеюсь, таблицы подстановки по своей природе достаточно фиксированы.Для больших таблиц подстановки сложно вводить все ячейки по отдельности, и некоторые пользователи могут превышать лимит в 30 ячеек.
Я бы, конечно, приветствовал более элегантное решение!
Другие советы
Боюсь, я думаю, что ответ будет отрицательным.Из текста справки по http://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=
Реальная мощь ARRAYFORMULA проявляется, когда вы берете результат одного из этих вычислений и заключаете его в формулу, которая принимает аргументы массива или диапазона:СУММА, МАКСИМУМ, МИНИМУМ, ОБЪЕДИНИТЬ,
Поскольку vlookup принимает одну ячейку для поиска (в первом аргументе) Я не думаю, что вы можете заставить ее работать, не используя отдельный диапазон поиска.
Я знаю, что эта тема довольно старая, но я уже некоторое время боролся с этой же проблемой.Наконец-то я наткнулся на решение (ну, мы вместе его усовершенствовали).Это лишь немного более элегантно, но должно позволять без проблем работать с большими наборами данных.
В решении используется следующее:
=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))
как суррогат функции vlookup.
Я надеюсь, что это кому-то поможет!
вы можете легко сделать вот так, жестко запрограммировав это в VR table:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
{"B", 5};
{"C", 4};
{"D", 3};
{"E", 2};
{"F", 1}}, 2, 0)), ))
или вы можете использовать несколько боковых ячеек с правилами:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))
альтернативы: https://webapps.stackexchange.com/a/123741/186471