Сведения о вопросе

Life

21:04, 6th August, 2020

Теги

Использование VLOOKUP в Формуле массива в электронных таблицах Google

Просмотров: 520   Ответов: 5

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

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



  Сведения об ответе

darknet

16:09, 6th August, 2020

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

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

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


  Сведения об ответе

ASSembler

15:24, 12th August, 2020

Google Spreadsheets, похоже, не имеет функции LOOKUP

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

SO27774 example

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


  Сведения об ответе

COOL

04:24, 9th August, 2020

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

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

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


  Сведения об ответе

fo_I_K

02:14, 24th August, 2020

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

В этом решении используется следующее:

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

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

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


  Сведения об ответе

COOL

06:48, 21st August, 2020

вы можете сделать это очень легко, закодировав его в таблице 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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться