Как рассчитать среднюю оценку из сочетания числовых и буквенных оценок, значения которых определяются с помощью таблицы поиска - PullRequest
1 голос
/ 15 октября 2019

Таблица данных

enter image description here

Таблица поиска

enter image description here

Я хочу рассчитать средний балл каждого ученика, используя формулу массива и без использования вспомогательных столбцов. Если все оценки являются числами, это достаточно просто, чтобы усреднить их, но когда в смесь вводятся буквенные оценки, мне нужно преобразовать их в их числовые значения, используя таблицу поиска, а затем усреднить всю строку для каждого ученика.

До сих пор мне удавалось взять одну строку и преобразовать все оценки, которые являются буквами, в соответствующие им значения, используя формулу ниже.

=TRANSPOSE(INDIRECT("N"&(MATCH(TRANSPOSE(B2:E2),Table2[Grade],0)+1)))

, которая возвращает:

={#N/A,#N/A,7,3}

Я тогда подумал:отлично, я получил цифры вместо буквенных оценок, давайте просто «усредним» этот результат примерно так:

=AVERAGE(TRANSPOSE(INDIRECT("N"&(MATCH(TRANSPOSE(B2:E2),Table2[Grade],0)+1))))

, что дает # N / A, чего я не понимаю, когда полностью разрешено следующее:

=AVERAGE({1,2,3})

Ответы [ 3 ]

1 голос
/ 15 октября 2019

Использование VLOOKUPs кажется намного проще:

=AVERAGE(B2,C2,VLOOKUP(D2,$M$2:$N$7,2,FALSE),VLOOKUP(E2,$M$2:$N$7,2,FALSE))

1 голос
/ 16 октября 2019

Один из способов решения проблемы - добавить все числовые оценки в таблицу 2 столбца Оценка , имеющуюся в столбцах M и N (технически она не использует вспомогательные столбцы?), А затем отсортировать Grade столбец в в порядке возрастания , как показано ниже:

Grade Table

Затем вы можете использовать следующую формулу массива чтобы найти среднюю оценку в ячейке F2:

=AVERAGE(LOOKUP(B2:E2,Tbl_Grade[Grade],Tbl_Grade[Attainment]))

Будучи формулой массива , вы ДОЛЖНЫ нажмите Ctrl + Shift + Введите после завершения формулы в строке формул, иначе она не будет работать правильно. Затем вы можете просто перетащить формулу вниз для применения.

Results

Логика заключается в использовании функции LOOKUP длявернуть соответствующее достижение для каждого заданного класса, независимо от того, является ли оно действительным числом или буквой.

Дайте мне знать, если у вас есть какие-либо вопросы. Ура:)

0 голосов
/ 15 октября 2019

Если вы можете допустить изменение «A *», чтобы сказать «A +» (или что-то еще, что не интерпретируется как подстановочный знак), это может заставить вас начать:

=(SUM(B2:E2)+SUMPRODUCT(SUMIF(Table2[Grade],"="&B2:E2,Table2[Attainment])))/COUNTA(B2:E2)

Первый SUM суммирует числовые оценки;SUMPRODUCT(SUMIF(...)) суммирует буквенные оценки. Затем разделите сумму на количество оценок (COUNTA).

Надеюсь, что поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...