#google-sheets #google-sheets-formula #google-query-language #top-n
#google-таблицы #google-таблицы-формула #массив-формулы #google-язык запросов #топ-н
Вопрос:
Я пытаюсь получить среднее значение из 3 последних значений, но только для конкретного пользователя.
Диапазон C — это даты, диапазон G — это значения, которые я пытаюсь найти в среднем, а диапазон A — это пользователи.
=ArrayFormula(IFERROR(average(query(IF(len('Month Tracker'!$C:$C),{ROW('Month Tracker'!$C:$C),'Month Tracker'!$G:$G},),"Select Col2 where Col2>0 order by Col1 Desc limit 3"))))
Эта формула работает для получения среднего значения последних 3 значений для всех пользователей. Однако мне нужно, чтобы он просматривал Month Tracker'!$A$2:$A
и применял формулу только в том случае, если пользователь in Month Tracker'!$A$2:$A
совпадает с пользователем in A2
на текущем листе … находя среднее значение из последних 3 значений только для этого пользователя.
Ответ №1:
Ваша формула на самом деле не возвращает строки с последними датами. Он просто возвращает строки, которые находятся внизу. Вероятно, просто случается так, что ваши последние даты находятся внизу, но формула никогда не проверяет это, пока они находятся внизу.
Другое дело ArrayFormula
, в этом случае, похоже, не требуется.
Это то, что вы можете использовать для своей текущей проблемы:
=IFERROR(AVERAGE(QUERY(IF('Month Tracker'!$C:$C,{'Month Tracker'!$C:$C,'Month Tracker'!$G:$G,'Month Tracker'!$A:$A},),"SELECT Col2 WHERE Col2>0 AND Col3="""amp;A2amp;""" ORDER BY Col1 DESC LIMIT 3")))
Если вам действительно нужно, вы можете обернуть его с ArrayFormula
помощью .
Комментарии:
1. Вы абсолютно правы… так получилось, что последние даты были внизу. Эта формула работает отлично и не требует переноса ArrayFormula. Я потратил бесчисленные часы, пытаясь заставить эту формулу работать… Я действительно ценю вашу помощь!