Código o macro para sumar automáticamente

Como mencione antes tengo este código que copia y pega información de hoja1 a hoja2

 Sub MACOR()On Error Resume NextApplication.ScreenUpdating = FalseRange("a1:d1000" & Range("a65536:d65536").End(xlUp).Row).SelectSelection.CopySheets("Hoja2").ActivateCells(1, Range("iv4").End(xlToLeft).Column + 1).SelectActiveSheet.Paste = xlPasteFormulasActiveSheet.PasteActiveSheet.Paste = xlPasteFormulasApplication.CutCopyMode = FalseApplication.ScreenUpdating = TrueSheets("Hoja1").SelectEnd Sub

el cual queda de esta forma al ejecutarse:

Así hasta la fila en código detallado..

Entonces si sigo ejecutando ese código se sigue pegando la información respetando la columna siguiente.. Lo que necesito es que me de la suma total de las cantidades de izquierda a derecha y este debe aparecer en una hoja llamada hoja'concentrado (solo la suma de todas las cantidades)

Si borro datos que respete solo los que quedan..

ya que utilzo la formula =(b4+f4+j4 + sucesivamente) y este al borrar algo me sale error de referencia...

1 Respuesta

Respuesta
1

Te anexo el código para la hoja "concentrado"

Sub concentrado()
'Por.Dante Amor
    Set h1 = Sheets("Hoja2")
    Set h2 = Sheets("concentrado")
    '
    h2.Cells.Clear
    For i = 4 To h1.Range("B" & Rows.Count).End(xlUp).Row
        For j = 2 To h1.Cells(3, Columns.Count).End(xlToLeft).Column Step 4
            h2.Cells(i, "B") = h2.Cells(i, "B") + h1.Cells(i, j)
        Next
    Next
End Sub

Hola dan...

¿Y si tengo este código y varias hojas? solo agrego mas set?

Sub MACOR2() Dim respuesta As Variant        respuesta = MsgBox("¿seguro de su factura?", vbYesNo + vbQuestion, "AVISO")        If respuesta = vbYes ThenSheets("Hoja1").Select    On Error Resume Next    Application.ScreenUpdating = False    ActiveSheet.Range("$A$3:$D$1000").AutoFilter Field:=4, Criteria1:=">0", _        Operator:=xlAnd    Range("a1:d" & Range("a65536:d100").End(xlUp).Row).Select    Selection.Copy    hoja = Range("A1")    existe = False    For Each h In Sheets        If h.Name = hoja Then            existe = True            Exit For        End If    Next    If existe Then        Sheets(hoja).Activate        Cells(1, Range("iv4").End(xlToLeft).Column + 1).Select        ActiveSheet.Paste = xlPasteFormulas        ActiveSheet.Paste        ActiveSheet.Paste = xlPasteFormulas        Application.CutCopyMode = False        Application.ScreenUpdating = True    Else        MsgBox "No existe la hoja: " & Range("A1"), vbInformation    End If    Sheets("Hoja1").Select        ActiveSheet.Range("$A$3:$D$1000").AutoFilter Field:=4        Range("A4:A60").Select    Selection.ClearContents    Range("d1").Value = Range("d1").Value + 1   If factura = vbNo Then   Exit Sub      End If      End IfEnd Sub

Disculpa pero no entiendo, puedes explicar paso a paso qué es lo que necesitas.

Yo entiendo lo siguiente.

Paso 1, ejecutas tu macro y copia información de la hoja1 a la hoja2.

Paso 2, ejecutas mi macro y realiza las sumas de la hoja2 y las pone en la hoja "concentrado"

¿Qué es lo que tu necesitas? Pero explícalo paso a paso.

¿Si mira es que recuerdas que te había comentado en otra pregunta para copiar datos y pegar en hojas existentes?

¿Entonces si tengo varias hojas? ¿Hará el mismo proceso de suma?

¿Si copio datos de la hoja1 lo pega en hoja2 hace la suma en concentrado?

¿Si copio datos y lo pega en la hoja 3 también se sumaria a hoja concetrado? Así con la hoja4 y hoja 5

No.

La macro está preparada para que funcione solamente con una hoja.

Para que funcione con varias hojas, necesito que me digas, cómo está la hoja3 y cómo quieres que se vaya sumando en la hoja "concentrado"

De igual forma la hoja3, la hoja4 y la hoja5 deben sumar su propio concentrado...

Siempre copiando la hoja1 y pegar en cualquiera de las 4 hojas para pegar...

Hacer la suma de cantidad de cada producto al final tener su concentrado por hoja para así tener un concentrado final de todo... es para control

Algo así como un almacen salidas y entradas de producto

No entiendo

Tienes que explicarlo con ejemplos

¿Vas a tener una hoja "concentrado1" otra hoja "concentrado2" otra hoja "concentrado3"?

Este es el código que uso actualmente:

Sub macro3()    On Error Resume Next    hoja = InputBox("Escribe el nombre de la hoja")    If hoja = "" Then Exit Sub    existe = False    For Each h In Sheets        If UCase(h.Name) = UCase(hoja) Then            existe = True            Exit For        End If    Next    If existe Then        Application.ScreenUpdating = False        Range("a1:d1000" & Range("a65536:d65536").End(xlUp).Row).Select        Selection.Copy        Sheets(hoja).Activate        Cells(1, Range("iv4").End(xlToLeft).Column + 1).Select        ActiveSheet.Paste = xlPasteFormulas        ActiveSheet.Paste        ActiveSheet.Paste = xlPasteFormulas        Application.CutCopyMode = False        Application.ScreenUpdating = True    Else        MsgBox "No existe la hoja: " & Range("A1"), vbInformation    End IfEnd Sub

paso 1: inserto cantidades en A4 desde la hoja1, cuando le doy clic a factura (que es el codigo antes mencionado) este me pide donde pegar

Paso 2: una vez puesto el nombre de la hoja este me lo va pegando según columna vacía quedando algo así: (aquí ya ejecute la macro 4 veces)

Entonces el concentrado de la hoja VENDEDOR4 me debe salir aparte en hoja CONCENTRADO4 como referencia al vendedor... que es la suma de las cantidades por producto.

En este caso es b4, f4, j4 y n4 así por cada producto quedando algo así si fuese fórmula:

osea las veces que sea que se ejecute el código este siempre debe sacar la suma de cantidad por producto..

Esto para cada VENDEDOR (hoja) Y ASÍ al final de todo hacer una sola hoja entonces este el conetrado final que es la suma de los 4 concentrados por vendedor..

¿Vas a tener un hoja concentrado por vendedor y al final quieres un concentra de todos los concentrados?

Si así es... es para control... ¿o qué me sugieres?

Que tengas en una sola base de datos a todos los proveedores y todos los productos y después con una tabla dinámica hagas los concentrados por proveedor, así no tendrás muchas columnas con la misma información, ni muchas hojas repetidas con la misma información, ni muchos concentrados, que lejos de ayudarte te van a complicar las consultas.

Incluso puedes agregar la fecha, para que después hagas cortes por mes, todo en una sola hoja.

El resultado de la tabla dinámica te lo puedes llevar a otra hoja para imprimir o analizar.

aa estaria bien asi... entonces que codigo pondre para generar los concentrados de cada vendedor?

Lo grandioso de la tabla dinámica es que no necesitas macros, solamente almacena la información como te la puse en el ejemplo, después vemos cómo crear una tabla dinámica.

Revisa el siguiente vídeo para crear tabla dinámica

https://www.youtube.com/watch?v=H4D9xIXzdvI 

YA entendí tu idea... y es excelente... lo que pasa es que una vez teniendo los concentrados falta todavía realizar algunas actividades...

Esto sigue después de tener el cocentrado final...

Cuanto de lo que le dimos al vendedor 1 nos devolvió... cuanto se traspasaron entre vendedores para llegar al total neto de lo que ellos vendieron..

Pero ya eso es fácil una vez obteniendo el concentrado final

Con la misma tabla dinámica puedes poner los vendedores en columnas

Arrastra los campos de la fila a la columna y prueba las diferentes combinaciones

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas