Использование VLOOKUP в формуле массива в таблицах Google
По сути, я хочу дать числовые оценки буквенным оценкам и суммировать их. В Excel выкладываю LOOKUP
Функция в массив формул работает:
{=SUM(LOOKUP(grades, scoringarray))}
С VLOOKUP
Функция это не работает (получает только балл за первый класс). Таблицы Google не имеют LOOKUP
функция и VLOOKUP
терпит неудачу таким же образом, используя:
=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))
или же
=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))
Возможно ли это сделать (но у меня неправильный синтаксис)? Можете ли вы предложить метод, который позволяет проводить вычисления в одной простой ячейке, а не скрывать поиски где-то еще и суммировать их впоследствии?
4 ответа
Я все еще не вижу формул в вашем примере (только значения), но это именно то, что я пытаюсь сделать с точки зрения результата; очевидно, я уже могу сделать это "на стороне" и суммировать отдельно - ключ для меня - это делать в одной ячейке.
Я посмотрел на это снова этим утром - используя 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 возникает, когда вы берете результат одного из этих вычислений и заключаете его в формулу, которая принимает аргументы массива или диапазона: SUM, MAX, MIN, CONCATENATE,
Поскольку vlookup использует для поиска одну ячейку (в первом аргументе), я не думаю, что вы можете заставить ее работать, не используя отдельный диапазон поиска.
В Google Spreadsheets отсутствует функция LOOKUP
Предположительно, не тогда, но сейчас:
grades
Лист1 A2:A4scoringarray
Лист1 A2:B4
Я знаю, что эта ветка довольно старая, но я боролся с этой же проблемой в течение некоторого времени. Наконец-то я наткнулся на решение (ну, вместе с Франкенстионом). Это только немного более элегантно, но должно быть в состоянии работать с большими наборами данных без проблем.
Решение использует следующее:
=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))
как суррогат для функции vlookup.
Я надеюсь, что это помогает кому-то!
Вы можете сделать это легко, жестко закодировав это в таблице VR:
=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