Buenos días, si me pueden ayudar, algo asi como Copiar y filtrar archivos con códigos en excel o vba

buenos días expertos
si me pueden ayudar, tengo hecho algo asi como un sistema de facturación y quiero agregarle un cuadre de caja, osea poner un código que busca en una columna especifica B:B(fecha) y agrupar las fechas iguales para que el valor q esta en la columna siguiente que es TOTAL, sea copiado en una nueva hoja llamada CAJA y por dia me de el valor total de facturas generadas y asi saber cuando vendí en el dia y asi al dia siguiente... Etc--
de ante mano muchas gracias por su ayuda...
saludos

1 respuesta

Respuesta
1

Te mando mi solución y sigue mis pasos en este ejemplo:

Me voy a suponer que tenemos las fechas grabadas en la columna B desde B2 hacia abajo (en B1 tenemos el encabezado). En la columna C tenemos los importes desde C2 hacia abajo (en C1 tenemos el encabezado). Ejecutando esta macro te creará el informe que quieres en la hoja CAJA.

Sub resumen()
'Por Luismondelo
f = 1
Range("B2").CurrentRegion.Sort key1:=Range("b1"), order1:=xlAscending, Header:=xlYes, ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B2").Select
Do While ActiveCell.Value <> ""
valor = ActiveCell.Value
fila = ActiveCell.Row
contarsi = Application.WorksheetFunction.CountIf(Columns(2), valor)
suma = Application.WorksheetFunction.Sum(Range(Cells(fila, 3), Cells(fila + contarsi - 1, 3)))
Sheets("caja").Cells(f, 1).Value = valor
Sheets("caja").Cells(f, 2).Value = suma
f = f + 1
Do While ActiveCell.Value = valor
ActiveCell.Offset(1, 0).Select
Loop
Loop
End Sub

recuerda finalizar y puntuara

buenas tardes, he probado el código y funciona pero tengo dos inconvenientes

1. el formulario al ser cambio de mes me esta guardando la fecha con un formato diferente a en la hoja de facturas asi:

antes 27/06/2012
ahora 07/07/2012

como puedo corregir eso.

2. el valor de las facturas por fecha no esta en la columna siguiente, ¡como cambio para que lea el valor en la columna 4? en donde modifico el código

gracias por su ayuda

saludos

¿Con respecto a tu primera pregunta debe decirte que no la entiendo puedes explicarla mejor?

En la segunda pregunta necesito que me digas en que columna de excel están los totales, ¿si las fechas están en la columna B en qué columna están los totales?

respecto a la primera pregunta: en el formulario la fecha aparece automática con esta formula: Private Sub UserForm_Activate()
Me.txtFecha.Text = Date

en el mes pasado la guardaba en la hoja de exel con formato dd/mm/aaaa y ahora que pasamos a julio me la guarda mm/dd/aaaa como hago para que que una sola y no cambie el fromato al ser guadada en la hoja factura.

segunda pregunta:

los totales están el la columna E

gracias por tu ayuda

Seguramente te aparece así porque en tu equipo tienes configurada la fecha así, pero de todas formas prueba a usar esta sentencia en la macro:

txtfecha = format(txtfecha,"dd/mm/yyyy")

Si los datos que queremos sumar están en la columna E y nosotros estamos en la columna B, la macro quedaría así:

Sub resumen()
'Por Luismondelo
f = 1
Range("B2").CurrentRegion.Sort key1:=Range("b1"), order1:=xlAscending, Header:=xlYes, ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B2").Select
Do While ActiveCell.Value <> ""
valor = ActiveCell.Value
fila = ActiveCell.Row
contarsi = Application.WorksheetFunction.CountIf(Columns(2), valor)
suma = Application.WorksheetFunction.Sum(Range(Cells(fila, 5), Cells(fila + contarsi - 1, 5)))
Sheets("caja").Cells(f, 1).Value = valor
Sheets("caja").Cells(f, 2).Value = suma
f = f + 1
Do While ActiveCell.Value = valor
ActiveCell.Offset(1, 0).Select
Loop
Loop
End Sub

muchas gracias de verdad por tu ayuda me ha servido de mucho...

que pena la molestia he probado todo pero solo me queda un error, con respecto a la segunda respuesta y es que los datos quedan copiados en las columnas A1 Y B1... en la hoja de factura y no tengo espacio para colocar los encabezados.... como seria el código para que copie los datos en a partir de A2 y B2... gracias y que pena tanta molestia...

saludos

La línea donde pone: f=1

tienes que poner f=2

Y listo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas