Macro para sumar varias filas de una hoja

Tengo una hoja de cálculo en la que voy añadiendo tickets diarios en los que pongo:

Cantidad, importe unitario, descripción, y multiplica importe por artículos, en otra columna voy poniendo el número de ticket (ejemplo 24) y en otra el mes

Hay tickets con 2 artículos, otros con 6 etc.

Quisiera generar una macro que me sume en una celda la columna sumatoria de los tickets 24 de ese mes, ya que en el siguiente habrá otro mes con el ticket 24

1 respuesta

Respuesta
1

Suba una imagen de sus datos y ahí explique de forma gráfica lo que necesita para entender mejor y poder ayudarle

En la celda marcada, quiero que al ejecutar la macro me sume todos los tikets 24,  o sea las cantidades, 1.30+2+1.5+0.40=5.20 .

También se me ocurre que si en la columna de fecha, que la meto yo, si aparece la fecha (21-0ct-19) me haga el sumatorio, ( lo veo difícil de programar)

Muchas gracias anticipadas.

Con esta macro hace la suma como de valores del mismo ticket, el detalle es que va poniendo el valor en cada celda del mismo ticket no al final del mismo ticket como se muestra en el ejemplo de la imagen. Cambia los datos de la macro en cuanto al nombre de la hoja y las celdas por los datos de su archivo, cualquier cosa comenta, saludos.

Sub Sumar()
UltimaFila = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("B2:" & ActiveSheet.Range("B2").End(xlDown).Address).Select
Dim CELDA As Range
valticket = 2
    For Each CELDA In Selection
        ticket = Range("B" & valticket).Value
        valorencontrado = Valor
        For CONT = 2 To UltimaFila
            If Sheets("Hoja12").Cells(CONT, 2) Like ticket Then
            n = n
                Valor = Valor + Sheets("Hoja12").Cells(CONT, 1)
                Sheets("Hoja12").Cells(CONT, 3).Offset = Valor
                n = n + 1
            End If
        Next CONT
        valticket = n + 1
        Valor = 0
    Next CELDA
    Range("A1").Select
End Sub

Esta macro no me vale, ya que en otras hojas voy haciendo el sumatorio de totales de cada tickets, solo me hace falta un total   en cada ticket y no el sumatorio artículo a artículo,  esto me distorsiona el resultado. 

Se me ocurre, si en la columna que pongo el día del ticket hay fecha, entonces suma todos los artículos que lleva el ticket nº X.

De todas formas, muchísimas gracias por dedicar tu tiempo a mi pregunta.

Si se puede hacer, bien, si no , iré haciendo a mano el "=suma(Xx:Yy)"

Reitero mi agradecimiento

Nada más dígame una cosa, ¿cómo va la macro pone cantidades en casa línea del articulo por lo que entiendo que lo que le interesa que unicamente vaya la suma en la ultima fila del ticket encontrado? De ser así tratare, de agregar código a la macro para que unicamente deje el total en el ultimo ticket encontrado.

La idea es si pongo fecha (21-oct) en el último artículo del ticket , la macro se ejecutaría  en la columna que marco con una flecha y me suma todos los artículos del ticket 24 (1.30+2+1.5+0.40)

O una fórmula que si encuentra una fecha en la columna de la derecha, sume todos los tikets que hay entre esa fecha y la fecha anterior

Si entendí bien con esta formula obtendrá el resultado, si en su país el separador es punto y coma (;) sustituya por la coma (,) en la formula.

=SI(D10<>"",SUMAR.SI.CONJUNTO(A:A,B:B,B10),"")

Va la imagen de la prueba realizada

He  abierto una hoja en blanco y me ha funcionado, traslado la fórmula a la hoja y no me funciona

sale 18.20 

He de indicar que me he creado una fórmula para autonumerarse los tikets (columna f) =SI(ESBLANCO(B738);" ";SI(G737>0;F737+1;F737)) aunque la he quitado y no varía el resultado

Ya he descubierto el fallo, es mio, cada mes empiezo a enumerar los recibos con el número 1

es evidente que esta función matricial, me busca todos los recibos nº XX sea del mes que sea.

Me voy a crear entonces otra columna que haga una secuencia de recibos sin tener en cuenta el mes, y la fórmula se relacione con esa columna.

Muchisimas gracias, ya lo tengo claro. 

Bien, si hay algo más que comentar con mucho gusto, caso contrario si puede valorar para cerrar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas