Fitrar datos partiendo de una condición.

Tengo un reporte de ventas, el cual agregue una columna llamada estacus, la cual quisiera que al colocar el estatus de la factura (SALDO o PENDIENTE), la información de la fila donde coloque el estatus sea copiada en otra hoja, en el caso de que el estatus sea SALDO, me copie la información de la fila en una hoja llamada Reporte de cobros, en caso de que el estatus sea PENDIENTE, me copie la información en una hoja llamada Reporte facturas pendientes.
Has clic en este enlace y abre el archivo Reporte de ventas
http://cid-a2329e4f62a1a3f5.office.live.com/browse.aspx/.Public?uc=1
Gracias

1 respuesta

Respuesta
1
Lo lamento no bajo archivos ni recibo planillas de prueba, si deseas indicame lo rangos en donde esta la data, ya se en donde copiarlos ( has dado el nombre de las hojas )
De antemano gracias por responder.
Tengo un archivo de Excel llamado Reporte de ventas, el cual esta contenido por (3) hojas abiertas:
1-Reporte General de ventas.
2-Reporte de Cobros.
3-Reporte Facturas Pendiente.
La primera hoja contiene la siguiente información:
En la columna:
A: Fecha, B: Numero de factura, C: Cliente, en las columnas DE y E: monto de la factura, dependiendo si es un servicio o si es un producto, en las columnas F y G: calculo de comisiones dependiendo de si es un servicio o si es un producto. (Para servicio 20% y par producto un 3%). Una ultima columna llamada Estatus.
Los estatus pueden ser:
Factura Pendiente.
Saldada.
Quiero que al colocar una de estas opciones, filtrar la información de la siguiente manera.
Si la factura en la columna de estatus se registra como saldada, me copie la información de la fila en la hoja de Reporte de cobros. Solo me copie las siguientes filas de las columnas A, B, C, F, G. Si el estatus registra Factura pendiente, me copie toda la información de la fila en la hoja Reporte Facturas Pendiente.
Espero que lo entiendas.
Muchas gracias.
Ok, se puede pero debes decidir como hacerlo, es decir hay 2 opciones
1. Evaluar el dato introducido en columna H ( entiendo que esa es Status) y pasar "en linea" a las demás hojas dependiendo del criterio, lo cual implicaría que si te equivocas de criterio y luego lo corriges dependiendo del criterio copiarías otra ves la fila a la hoja
2. Procesar toda la planilla de una vez realizando un barrido en columna H y pasando las filas a las hojas respectivas según criterio, lo cual dependiendo del total de registros podría tardar algunos segundos o minutos...
Tu decides.
Usted es el experto, hagámoslo como usted recomientde.
Gracias
Ok vamos con la opción n° 2
Inserta un modulo en tu proyecto y en el pon estas macros
Option Explicit
Dim rc As Long
Dim fp As Long
Sub Facturas()
Dim i As Long
Dim g As Long
    Sheets("Reporte General de ventas").Select
    Sheets(Array("Reporte General de ventas", "Reporte de Cobros", _
        "Reporte Facturas Pendiente")).Select
    Sheets("Reporte General de ventas").Activate
    [A65536].Select
    ActiveCell.FormulaR1C1 = "=COUNTA(R[-65535]C:R[-1]C)"
    [A2].Select
    Sheets("Reporte General de ventas").Select
g = [A65536].Value
[A65536].Clear
If g = 0 Then Exit Sub
Application.ScreenUpdating = False
For i = 2 To g
     If Range("H" & i).Text = "Saldada" Then cop1 (i)
     If Range("H" & i).Text = "Factura Pendiente" Then Rows(i).Select: Rows(i).Copy: cop2 (i)
DoEvents
Next
[a1].Select
Application.ScreenUpdating = True
MsgBox "Terminado"
End Sub
Sub cop1(fila As Long)
  rc = Sheets("Reporte de Cobros").Range("A65536").Value
  rc = (rc + 2)
  Sheets("Reporte de Cobros"). Cells(rc, 1) = Sheets("Reporte General de ventas"). Cells(fila, 1)
  Sheets("Reporte de Cobros"). Cells(rc, 2) = Sheets("Reporte General de ventas"). Cells(fila, 2)
  Sheets("Reporte de Cobros"). Cells(rc, 3) = Sheets("Reporte General de ventas"). Cells(fila, 3)
  Sheets("Reporte de Cobros"). Cells(rc, 6) = Sheets("Reporte General de ventas"). Cells(fila, 6)
  Sheets("Reporte de Cobros"). Cells(rc, 7) = Sheets("Reporte General de ventas"). Cells(fila, 7)
End Sub
Sub cop2(fila As Long)
fp = Sheets("Reporte Facturas Pendiente").Range("A65536").Value
fp = (fp + 2)
Sheets("Reporte Facturas Pendiente").Select
Sheets("Reporte Facturas Pendiente").Cells(fp, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Reporte General de ventas").Select
End Sub
Cuando ya estés listo para procesar datos, corre el macro Facturas
me cuentas que tal y si te sirve cierra la pregunta
bye
De antemano, gracias.
Favor indicarme en que celda y en que Hoja tengo que situarme para luego insertar la macro.
Es que no tengo mucho conocimiento de VBA, poro si me indicas estoy seguro que lo logro.
Nota: cuento con el Office 2007
Debes insertarlo en un modulo
Abre el editor de visual basic teclas ALT+F11
al costado izquierdo aparecen las hojas de tu libro, sobre cualquiera de ellas con el botón derecho del mouse selecciona "insertar" y elige Modulo se agregara a tu proyecto un nuevo objeto, selecinalo y dale doble click, se abrirá una ventana en blanco en donde debes copiar todo el código que te pase
luego grabas y listo
desde tu hoja de excel presionas teclas ALT + F8 y seleccionas el nombre del Macro Facturas y lo ejecutas.
Eso es todo
Me manda un error
Se ha producido un error "9" en tiempo de ejecución.
Subíndice fuera del intervalo
Pff!... indicame un mail para enviarte el ejemplo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas