#google-sheets #google-sheets-formula #spreadsheet #array-formulas
#google-таблицы #google-таблицы-формула #электронная таблица #массив-формулы
Вопрос:
Я работаю над обновлением рабочей книги Google Spreadsheet с некоторыми дополнительными функциями.
У меня есть различные элементы, которые проходят через отделы. Я хочу оценить прогресс на основе их статуса, выбранного из выпадающего меню. Таким образом, мы можем видеть, насколько далеко продвинулись в работе.
У меня есть пример файла с рабочей версией и новой версией, которую я хочу решить: Пример файла
Исходная версия содержит слова состояния и связанные значения. Выберите статус в раскрывающемся списке — затем вычислите среднее значение как для элемента, так и для отдела на основе значений и количества записей.
Записи включают: Готово = 100%, Активно = 50%, Очередь = 0%, Нет = игнорировать значение
В новой версии я хочу включить больше слов состояния и значений в таблицу, чтобы я мог обновлять их в зависимости от потребностей проекта.
Формула в рабочей версии:
=ARRAYFORMULA(TRANSPOSE(IF(LEN(TRANSPOSE(C10:10)),MMULT(IFERROR((N(REGEXMATCH(TRANSPOSE(C10:O), "Done")) N(REGEXMATCH(TRANSPOSE(C10:O),"Active"))/2)/MMULT(N(REGEXMATCH(TRANSPOSE(C10:O),"[^None]")),(ROW(C10:C)^0)),0),(ROW(C10:C)^0)), )))
Новая версия с дополнительными значениями таблицы:
Спасибо @player0 за оригинальную версию этого.
Ответ №1:
Если вы измените значение для status None
на #N/A
, вы можете использовать следующие формулы:
для столбцов
=ArrayFormula(IFERROR(MMULT(COLUMN($A$1:$J$1)^0,IFERROR(VLOOKUP(C16:O25,$A$2:$B$11,2,false),0))/MMULT(COLUMN($A$1:$J$1)^0,--(ISNUMBER(VLOOKUP(C16:O25,$A$2:$B$11,2,false)))),""))
для строк
=ArrayFormula(IFERROR(MMULT(IFERROR(VLOOKUP(C16:O25,$A$2:$B$11,2,false),0),ROW(A1:A13)^0)/MMULT(--(ISNUMBER(VLOOKUP(C16:O25,$A$2:$B$11,2,false))),ROW(A1:A13)^0),""))