Como integrar una variable en una FormulaR1C1

Tengo el siguiente código:

Cells(ult + 4, 2).Select
ActiveCell.FormulaR1C1 = "=0.94*R[-28]C+(1-0.94)*R[-1]C"
Range(Cells(ult + 4, 2), Cells(2 * ult - rang + 4, 2)).AutoFill Destination:=Range(Cells(ult + 4, 2), Cells(ult + 4, 51)), Type:=xlFillDefault

quiero remplazar el [-28] con una variable w entonces tomar el número de fila donde se encuentra el dato "s55" y ponerlo en la fórmula.

w = Cells.Find(what:="s55").Offset(0, 1)

Debe quedar formulada la respuesta. ¿Cómo realizaría esto?

1 Respuesta

Respuesta
1

H o l a:

Me puedes explicar con imágenes y con colores en las imágenes y con comentarios, lo que quieres hacer. Olvídate del código de tu macro, explícame con ejemplos lo que tienes y lo que quieres que aparezca.

Como te comenté esta fórmula es relativa, ya que depende de la ubicación del cursor de excel, pero si no sé en dónde está el cursor, no puedo arreglar la fórmula.

tengo los siguientes datos, debo realizar una operación en la fila 403 columna B, que seria algo asi:

=0,94*B375+(1-0,94)*B402

el B375 representa los valores de S55 pero no siempre estaran en la misma fila, por esa razón lo coloco con una variable que lo busca y coloca los valores sin importar donde de encuentre S55.

Tiene que quedar algo asi:

En la imagen el resultado esta en la fila 403 pero no siempre tendrá que estar hay, ya que pude que existan mas datos en las filas anteriores y el resultado deba colocarse mucho mas abajo, esto lo solucione con la variable ult.

Pero lo mismo aplica para los valores que están resaltados en verde de S55, no siempre estarán en esa fila, puede que mucho mas abajo. 

No se si me hice entender cualquier cosa estoy atento. Gracias 

pdtt: Los valores de la fila 402 quedaron gracias al código con el que me ayudaste anteriormente y que tomaban a S27 el cual también esta resaltado en verde. Necesito hacer eso mismo pero que con los valores de S55 se haga la operación que describí anteriormente 

Ya entendí

Prueba con lo siguiente:

    ult = Range("A" & Rows.Count).End(xlUp).Row
    rang = ult
    Cells(ult + 3, 2).Select
    Set b = Columns("A").Find(what:="s27")
    If Not b Is Nothing Then
        ActiveCell = "=B" & b.Row
        Range(Cells(ult + 3, 2), Cells(2 * ult - rang + 3, 2)).AutoFill Destination:=Range(Cells(ult + 3, 2), Cells(ult + 3, 51)), Type:=xlFillDefault
    End If
    Cells(ult + 4, 2).Select
    Set b = Columns("A").Find(what:="s55")
    If Not b Is Nothing Then
        ActiveCell = "=0.94*B" & b.Row & "+(1-0.94)*B" & ult + 3
        Range(Cells(ult + 4, 2), Cells(2 * ult - rang + 4, 2)).AutoFill Destination:=Range(Cells(ult + 4, 2), Cells(ult + 4, 51)), Type:=xlFillDefault
    End If

¡Gracias! es precisamente lo que necesitaba. Quisiera que me explicaras esta parte del código 

ActiveCell = "=0.94*B" & b.Row & "+(1-0.94)*B" & ult + 3

Lo demás lo entiendo pero esa parte no se como funciona. 

Estoy haciendo una búsqueda y el resultado queda en el objeto "b"

Set b = Columns("A").Find(what:="s27")

entonces en la celda activa pongo la fórmula:

.94*B" (la columna B y la fila la tengo en el objeto b, entonces pongo b.row:

ActiveCell = "=0.94*B" & b.Row

las variables que se ponen dentro de un texto deben empezar con comillas, luego & variable luego & y cerrar comillas:

"texto" & variable & "texto"

"=0.94*B" & b.Row & "

Y por último se pone el valor de la columna B de la última fila + 3 filas:

"+(1-0.94)*B" & ult + 3

Recuerda:

"texto" & variable

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas