Упрощенная версия моей проблемы заключается в том, что на другом листе под названием Sheet2
у меня есть данные, которые я хочу усреднить:
=AVERAGE(Sheet2!$A$1:Sheet2!$A$100)
В зависимости от того, где используется код выше, мне нужно поменять столбец A
на другую букву, например, столбец D
. Для этого я создал функцию:
=MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)
который выведет D
.
Моя проблема в том, что вместо того, чтобы написать:
=AVERAGE(Sheet2!$D$1:Sheet2!$D$100)
Я хочу использовать:
=AVERAGE(Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$1:Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$100)
но Excel не принимает это. Как я могу использовать функции рядом с Sheet2!
?
решение1
Вы можете использовать КОСВЕННЫЙ:
=AVERAGE(INDIRECT ("Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$1:Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$100"))
решение2
OFFSET и INDIRECT изменчивы, мы можем использовать INDEX
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,4))
Сообщает 0
INDEX о необходимости возврата всех строк, а это 4
4-й столбец. Таким образом, все строки от 1 до 100 в столбце 4 будут усреднены.
Согласно вашим комментариям:
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,(COLUMN(A:A)-1)*3))
решение3
Вот один из способов:
=AVERAGE(OFFSET(Sheet2!$A:$A,0,(COLUMN()-1)*3))
Обратите внимание, что OFFSET
это изменчиво и увеличит вычислительную нагрузку в вашей рабочей книге.