Como usar la Función "Fórmula R1C1"

Sub AjustarFormulas()
    Dim i, j, LastRow As Long
    LastRow = Range("O" & Rows.Count).End(xlUp).Row 'Cuenta cuantas filas hay en la tabla
    j = 0 'inicia el contador desde cero
    For i = LastRow To 1 Step -1 'pasa por cada fila desde la ultima del libro hacia la primera fila
        If Range("O" & i).Value <> 1 Then 'evalúa si el valor en la columna O es Diferente a 1
            j = j + 1 'Si es diferente va contando cuantas filas hay entre Padres.
        Else
            Worksheets("ITEMS1,1").Range("N" & i).FormulaR1C1 = "=SUM(R[0]C[-1]:R[0]C[-1])" 'Cuando encuentra un 1 asigna la formula subtotal con los rangos que contienen los valores a sumar
            j = 0 'Reinicia el contador para cada rango.
        End If
    Next i 'Pasa a la siguiente fila
End Sub

Lo que necesito es que la Macro recorra la fila "O" desde la ultima fila, y si el valor es diferente de 1 vaya haciendo un conteo, y en cuento encuentre un 1 haga la función "suma" en la Columna "N", justo al lado de donde encontró ese 1. Creo que el código que estoy usando esta bien (creo), pero no se como ajustar la linea

Worksheets("ITEMS1, 1").Range("N" & i).FormulaR1C1 = "=SUM(R[0]C[-1]:R[0]C[-1])"

Para que me funcione bien, ya que de momento el código no hace nada de nada.
Espero que me lograra entender, cualquier información adicional se las daré con gusto.

1 respuesta

Respuesta
2

¿Pero qué quieres sumar?

¿Y para qué el contador?

¿Y por qué lo haces de abajo hacia arriba?

Quiero sumar unos Datos que hay en la Columna N

El contador es para que acumule el número de filas que hay entre "1´s"

Para que lo haga desde la ultima fila que tenga datos

Estoy un poco perdido.

¿En la columna N tienes valores y en la misma columna N quieres poner la suma?

Prueba con la siguiente macro

Sub Ajustar_Formulas()
    ini = 1
    For i = 1 To Range("O" & Rows.Count).End(xlUp).Row
        If Cells(i, "O").Value = 1 Then
            Cells(i, "N").FormulaR1C1 = "=SUM(R" & ini & "C:R" & fin & "C)"
            ini = i + 1
        End If
        fin = i
    Next
    MsgBox "Fin"
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Si no es lo que necesitas, puedes poner 2 imágenes, una para ver tus datos originales y otra imagen para ver el resultado esperado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas