Cambiar rango de aplicación de una fórmula

Necesito aplicar una fórmula en toda una columna de varias hojas, colocando el resultado en la hoja 2 del libro. El problema es que en esa columna siempre hay dos o 3 celdas que contienen texto, y las que contienen números no siempre son la misma cantidad.

Por ejemplo: hay veces que el rango va desde la celda B3 a la B20000, porque las dos primeras celdas contienen texto, y en otros casos la cantidad de celdas que contienen números varía, por ejemplo de B3 a B15000. 

La idea que tengo es de poner manualmente el rango en otra celda, es decir:

tomando el ejemplo anterior, si el rango va desde B3 a B20000, colocar el numero 3 y 20000 en dos celdas diferentes y cuando se aplique la fórmula tenga en cuenta esos dos valores como rango de aplicación.

La macro que contiene la fórmula es la siguiente:

Sub FORMULA()
n = 1
For Each h In Sheets
Select Case h.Name
Case "Hoja2"
Case Else
Sheets("Hoja2").Range("A" & n + 1).FormulaR1C1 = _
"=(POWER((SQRT(SUMSQ(" & h.Name & "!R3C2:R20482C2)/R2C6))/R2C7,2)*R[0]C[1])"
n = n + 1
End Select
Next
Range("A2:A16").Select
Selection.NumberFormat = "0"
End Sub

Lo que necesitaría modificar serían los números que se encuentran en "negrita".

Si alguien tiene una solución más viable, bienvenido sea. Es lo que a mi se me ocurre ya que no tengo muchos conocimientos en el tema. 

Espero se pueda entender la idea...

MUCHAS GRACIAS!!

1 Respuesta

Respuesta
1

Si ambos números no cambian en todas las hojas. Podría ser así, en la hoja2 en la celda C1 pon el número inicial (3) y en la celda D1 pon el número final (20000) .

Esta es la macro para que tome el inicial y el final de una celda.

Sub FORMULA()
n = 1
i = Sheets("Hoja2").Range("C1") 'Poner la celda del número inicial
f = Sheets("Hoja2").Range("D1") 'Poner la celda del número final
For Each h In Sheets
    Select Case h.Name
    Case "Hoja2"
    Case Else
        Sheets("Hoja2").Range("A" & n + 1).FormulaR1C1 = _
        "=(POWER((SQRT(SUMSQ(" & h.Name & "!R" & i & "C2:R" & f & "C2)/R2C6))/R2C7,2)*R[0]C[1])"
        n = n + 1
    End Select
Next
Range("A2:A16").Select
Selection.NumberFormat = "0"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas