Мои данные включают несколько повторных измерений (~ 4-5) для каждого участника, и я хочу иметь возможность усреднить все конкретные показатели для каждого участника. например, на прикрепленном снимке экрана я хочу вычислить среднее значение для каждой из мер (столбцы CK, каждый столбец представляет отдельную меру) для первого пользователя (ID = 38106100), второго пользователя (ID = 38212221) и т. д. по отдельности. То есть я хочу вычислить среднее значение для каждого столбца, используя только строки 2-5, а не только строки 6-8, затем 9-12 и т.д., Без необходимости повторять для каждого идентификатора участника (у меня 200 участников) ,
1 ответ
Вы не указали точный формат, не приложили скриншот, так что его немного сложно угадать.
Предположим следующее
Sheet1
A B C D E
name date unit_1 unit_2 unit_3
John 1-2-3 3 9 7
John 2-2-3 9 13 16
Maria 9-10-4 10 8 7
Maria 13-5-4 6 3 7
Maria 9-8-7 8 7 3
Что вы можете сделать, это создать второй лист. - Создайте столбец A, содержащий имя текущего участника (или идентификатор, или любой другой столбец A вашего листа 1 (или B?)). - Создайте столбец B, содержащий первую строку, содержащую информацию об участнике столбца A. - Создайте столбец C, содержащий последнюю строку, содержащую информацию об участнике столбца A. - Создайте столбцы DL, содержащие средние значения.
Предполагая, что вы хотите зарезервировать строку 1 для строки заголовка, этот пример начинается со строки 2.
Row #2
A = INDIRECT(CONCATENATE("Sheet1!A",B2)
B = IF(ROW()=2;2;C1+1)
C = SUMPRODUCT(MAX((INDIRECT(CONCATENATE("Sheet1!A",B2,":","A",B2+10))=A2)*(ROW(INDIRECT(CONCATENATE("Sheet1!A",B2,":","A",B2+10))))))
D = AVERAGE(INDIRECT(CONCATENATE("Sheet1!C",$B2,":","C",$C2)))
E = AVERAGE(INDIRECT(CONCATENATE("Sheet1!D",$B2,":","D",$C2)))
F = AVERAGE(INDIRECT(CONCATENATE("Sheet1!E",$B2,":","E",$C2)))
G = AVERAGE(INDIRECT(CONCATENATE("Sheet1!F",$B2,":","F",$C2)))
H = AVERAGE(INDIRECT(CONCATENATE("Sheet1!G",$B2,":","G",$C2)))
I = AVERAGE(INDIRECT(CONCATENATE("Sheet1!H",$B2,":","H",$C2)))
J = AVERAGE(INDIRECT(CONCATENATE("Sheet1!I",$B2,":","I",$C2)))
K = AVERAGE(INDIRECT(CONCATENATE("Sheet1!J",$B2,":","J",$C2)))
L = AVERAGE(INDIRECT(CONCATENATE("Sheet1!K",$B2,":","K",$C2)))
Столбец B содержит первую строку (строка 2), если это первая строка в sheet2, в противном случае он примет конечное значение строки выше и +1 к ней. Столбец A получает имя, принадлежащее этой строке, из столбца A, строки столбца B2 из листа с именем «Sheet1». Столбец C находит первую строку, имеющую другое значение в строке A (проверяется только до 10 строк, если более 10 строк, материал может сломаться, отрегулируйте число 10, если вам нужно обслуживать больше строк.) Столбцы DL рассчитывают средние значения. Столбцы DL в основном одинаковы, так что вы можете просто перетащить формулу от D до L.