Использование VLOOKUP в формуле массива в таблицах Google - PullRequest
2 голосов
/ 26 августа 2008

По сути, я хочу дать числовые оценки буквенным оценкам и суммировать их. В 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)))

Возможно ли это сделать (но у меня неправильный синтаксис)? Можете ли вы предложить метод, который позволяет проводить вычисления в одной простой ячейке, а не прятать поиски где-то в другом месте и суммировать их впоследствии?

Ответы [ 5 ]

2 голосов
/ 26 августа 2008

Боюсь, я думаю, что ответ - нет. Из текста справки на http://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=

Реальная сила ARRAYFORMULA возникает, когда вы берете результат одного из этих вычислений и заключаете его в формулу, которая принимает аргументы массива или диапазона: SUM, MAX, MIN, CONCATENATE,

Поскольку vlookup использует для поиска одну ячейку (в первом аргументе), я не думаю, что вы можете заставить ее работать, не используя отдельный диапазон поиска.

1 голос
/ 28 июля 2018

Google Spreadsheets не имеет функции LOOKUP

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

SO27774 example

grades Лист1! A2: A4
scoringarray Лист1! A2: B4

0 голосов
/ 16 марта 2019

Вы можете сделать это легко, жестко закодировав его в таблице VR:

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
                                         {"B", 5};
                                         {"C", 4};
                                         {"D", 3};
                                         {"E", 2};
                                         {"F", 1}}, 2, 0)), ))

0

или вы можете использовать некоторые боковые ячейки с правилами:

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))

6


альтернативы: https://webapps.stackexchange.com/a/123741/186471

0 голосов
/ 07 февраля 2013

Я знаю, что эта ветка довольно старая, но я уже некоторое время боролся с этой же проблемой. Я наконец-то наткнулся на решение (ну, вместе с Франкенстионом). Это только немного более элегантно, но должно быть в состоянии работать с большими наборами данных без проблем.

Решение использует следующее:

=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))

как суррогат для функции vlookup.

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 27 августа 2008

Я все еще не вижу формул в вашем примере (только значения), но это именно то, что я пытаюсь сделать с точки зрения результата; очевидно, я уже могу сделать это «на стороне» и суммировать по отдельности - ключ для меня - сделать это в одной ячейке.

Я посмотрел это снова сегодня утром - использование функции 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 ячеек.

Я бы, конечно, приветствовал более элегантное решение!

...