Использование ВПР в формуле массива в электронных таблицах Google

StackOverflow https://stackoverflow.com/questions/27774

  •  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 принимает одну ячейку для поиска (в первом аргументе) Я не думаю, что вы можете заставить ее работать, не используя отдельный диапазон поиска.

Похоже, что в Google Spreadsheets нет функции поиска

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

SO27774 example

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

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

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

=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)), ))

0

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

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

6


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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top