Использование 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

Предположительно, не тогда, но сейчас:

Пример SO27774

grades Лист1 A2:A4
scoringarray Лист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

Другие вопросы по тегам