Sumar rangos de una columna indeterminado con macros

Tengo una hoja con 3 columnas N°, PRODUCTO Y VENTAS, como hago para que al final de la fila me aparezca la palabra TOTAL y su resultado en la COLUMNA "C". Y que quede sombreado y a medida que vaya ingresando o elimine desde un userform lo datos nunca pierda el total de su suma con su sombreado que se mueva al momento que haga un movimiento.

2 respuestas

Respuesta
1

Estimada Brenda:

Revisa este enlace y me comentas si es lo que buscas.

Sumatoria con macros automáticamente con userform desde excel

S@lu2

¡Gracias! 

Gracias por responder Isaac Reyes ya ingrese su código pero no realiza la sumatoria solo la ingresa la información nada mas; no se la palabra total y su sumatoria.

    Dim lngFila As Long
    lngFila = Range("A" & Sheets(1).Rows.Count).End(xlUp).Row
    Rows(lngFila & ":" & lngFila).Insert Shift:=xlDown
    Range("A" & lngFila) = TxtProducto.Text
    Range("B" & lngFila) = TxtVentas.Text

Puedes probar con lo que indica James Bond o agregar manualmente la fórmula SUMA("B2:B7") en la celda B8 (según tu ejemplo) y agregando el texto TOTAL en A8. Si haces esto, te darás cuenta que al ejecutar la macro, esta fila se desplaza hacia abajo, pero continúa realizando la suma de forma correcta.

S@lu2

Si lo haces como te comento, se simplifica la macro.

Respuesta
1

La imagen que ves es el resultado de la macro, conforme en el formulario des de alta productos la fila total se ira moviendo hacia abajo

y esta es la macro, solo pégala en el formulario y pruébalas

Private Sub CommandButton1_Click()
Set DATOS = Range("DATOS")
With DATOS
    FILAS = TextBox1.Text
    On Error Resume Next
    INDICE = WorksheetFunction.Match("TOTAL", .Columns(2), 0)
    Total = WorksheetFunction.Sum(.Columns(3))
    If Err.Number = 0 Then
        .Rows(INDICE).Clear
        TextBox1.Text = TextBox1.Text - 1
        FILAS = TextBox1.Text
        Total = WorksheetFunction.Sum(.Columns(3))
    End If
    On Error GoTo 0
        .Cells(FILAS + 1, 1) = TextBox1.Text
        .Cells(FILAS + 1, 2) = TextBox2.Text
        .Cells(FILAS + 1, 3) = TextBox3.Text
        .Cells(FILAS + 2, 2) = "TOTAL"
        .Cells(FILAS + 2, 3) = Total + TextBox3.Text
        .Rows(FILAS + 2).Interior.ColorIndex = 1
        .Rows(FILAS + 2).Font.Bold = True
        .Rows(FILAS + 2).Font.ColorIndex = 2
    CARGA
End With
End Sub
Private Sub UserForm_Initialize()
CARGA
End Sub
Sub CARGA()
Set DATOS = Range("A1").CurrentRegion
With DATOS
    FILAS = .Rows.Count
    TextBox1.Text = FILAS
    .Name = "DATOS"
End With
Set DATOS = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas