Una versión simplificada de mi problema es que en una hoja diferente llamada Sheet2
tengo datos que quiero promediar:
=AVERAGE(Sheet2!$A$1:Sheet2!$A$100)
Dependiendo de dónde se use el código anterior, necesito cambiar la columna A
por otra letra, por ejemplo, columna D
. Para ello he creado una función:
=MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)
que dará salida D
.
Mi problema es que en lugar de tener que escribir:
=AVERAGE(Sheet2!$D$1:Sheet2!$D$100)
Quiero usar:
=AVERAGE(Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$1:Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$100)
pero Excel no acepta esto. ¿Cómo puedo usar funciones al lado de Sheet2!
?
Respuesta1
Puedes usar INDIRECTO:
=AVERAGE(INDIRECT ("Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$1:Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$100"))
Respuesta2
OFFSET e INDIRECT son volátiles, podemos usar INDEX
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,4))
Le 0
dice al ÍNDICE que devuelva todas las filas y 4
es la cuarta columna. Entonces se promediarán todas las filas del 1 al 100 en la columna 4.
Según tus comentarios:
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,(COLUMN(A:A)-1)*3))
Respuesta3
Aquí hay una forma:
=AVERAGE(OFFSET(Sheet2!$A:$A,0,(COLUMN()-1)*3))
Tenga en cuenta que OFFSET
es volátil y aumentará la carga de cálculo en su libro de trabajo.