Extraer filas completas de una tabla excell a otra hoja independiente

Planteo el problema,

Tengo una tabla excell contable donde por filas y varias columnas se introducen los ingresos, gastos que existen diariamente dependiendo de diferentes conceptos y diferentes cuantas contables (este código (cuenta contable) esta en la primera columna y se repetirá en algunos gastos-ingresos en diversas filas.

Lo que necesito es extraer dependiendo del código todas las filas que contengan dicho código para ver todos sus ingresos o gastos dependiendo de dicho código, digasmolo asi, que me saque un resumen de todos los movimientos que haya tenido ese código.

Para facilitaros un poco, seria hacer los mismo que poniendo un simple filtro pero necesito que se me vuelque solo a otra hoja independiente y dependiendo del código que meta saque todos los movimientos (filas) que le correspondan.

3

3 Respuestas

4.308.975 pts. Sancho, si los perros ladran ...

Te anexo la macro

Sub Filtrar_Datos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    'DATOS HOJA1
    Set h1 = Sheets("Hoja1")        'hoja origen con datos
    fila1 = 3                        'fila donde comienzan los datos en la hoja1
    col = "L"                       'columna de códigos
    coln = Columns(col).Column
    '
    'DATOS HOJA2
    Set h2 = Sheets("Hoja2")        'hoja destino
    fila2 = 6                        'fila donde comienzan los datos en la hoja2
    celda = "E3"                    'celda en la hoja2 con el código
    '
    'INICIO
    h2.Rows(fila2 & ":" & Rows.Count).ClearContents
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    u = h1.Range(col & Rows.Count).End(xlUp).Row
    h1.Range("A2:" & col & u).AutoFilter Field:=coln, Criteria1:=h2.Range(celda)
    u = h1.Range(col & Rows.Count).End(xlUp).Row
    If u = 2 Then
        MsgBox "No hay registros con esa referencia"
        Exit Sub
    End If
    '
    h1.Rows(fila1 & ":" & u).Copy h2.Cells(fila2, "A")
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
End Sub

Tienes que ajustar en la macro esta información de acuerdo a tus datos.

    'DATOS HOJA1
    Set h1 = Sheets("Hoja1")        'hoja origen con datos
    fila1 = 3                        'fila donde comienzan los datos en la hoja1
    col = "L"                       'columna de códigos
    coln = Columns(col).Column
    '
    'DATOS HOJA2
    Set h2 = Sheets("Hoja2")        'hoja destino
    fila2 = 6                        'fila donde comienzan los datos en la hoja2
    celda = "E3"                    'celda en la hoja2 con el código

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

p.d. Tienes pendiente valorar esta respuesta:

Función SI entre horas anidada con O

Hola Dante, muchas gracias por tu respuesta.

Si decirte que algo estoy haciendo mal porque no me sale.

Te parece si te mando el archivo y me dices donde estoy fallando????, Son como te digo un archivo de excell de dos hojas, en una (que se llama "CAJA" estan los datos generales que se van introduciendo siempre que haya algun gasto o/y ingreso de diferentes conceptos, y en la segunda, que se llama "RESUMEN X CUENTA" que es donde quiero que colocando en la celda que se encuentra en rojo cualquier cuenta de la hoja "caja" (seria la columna "c" de la hoja "caja") busque en la hoja "caja" todas las filas que contengan ese codico/cuenta y me extrapole a esta segunda hoja todas esas filas para obtener un resumen de una única cuenca...., como te decía en mi primera consulta como si hiciéramos un simple filtro en la primera hoja por cuenta (filtro en la columna c) pero con la peculiaridad que aparezcan en otra hoja para poder tener controlados los gastos/ingresos por cuentas.

Te parece si me mandas un correo donde pueda mandartelo y le echas un vistazo???? Me serias de gran ayuda??? Estoy probando la macro que me mandaste pero algo hago mal.

MUCHAS GRACIAS

Mi correo

En el asunto del correo escribe tu nombre de usuario “carmen Duran

¡Gracias! 

hola dante te he escrito varios correos solicitando tu ayuda pero no se si por trabajo no los has visto o esque esté mal el correo, puedes confirmarme que te hayan llegado????. te dejo mi correo por si no te estuvieran llegando bien, ponte en contacto conmigo y sobre ese te contesto, 

[email protected]

siempre agradecida, carmen

No me han llegado tus correos, ya revisé mi carpeta de spam y tampoco.

Te envié un correo para que sobre ese mismo correo me contestes.

125.200 pts. Si de mis mayores gustos, mis disgustos han nacido,...

Te paso la siguiente macro solo teclea en el inputbox el codigo que quieres copiar y la macro te copiara todos los registros correspondientes a ese codigo a una hoja que tendra el numero de codigo, el unico cambio que tienes que hacerle a la macro es cambiar la primera linea adecuandola a tus datos.

Sub Macro1()
Set origen = Worksheets("hoja1").Range("a1").CurrentRegion
codigo = Val(InputBox("codigo a copiar"))
If IsEmpty(codigo) Or codigo = 0 Then End
On Error Resume Next
Sheets(codigo).Select
    If Err.Number > 0 Then
        Sheets.Add
        ActiveSheet.Name = codigo
    End If
On Error GoTo 0
With origen
    .Sort key1:=origen.Range(.Columns(1).Address), order1:=xlAscending, Header:=xlYes
    On Error Resume Next
    fila = WorksheetFunction.Match(codigo, .Columns(1), 0)
    If Err.Number > 0 Then MsgBox ("no existe este codigo"): End
    On Error GoTo 0
    cuenta = WorksheetFunction.CountIf(.Columns(1), codigo)
    ActiveSheet.Range("b2").Resize(cuenta, .Columns.Count).Value _
    = .Rows(fila).Resize(cuenta, .Columns.Count).Value
End With
End Sub

hola buenas tardes y gracias por la macro, te cuento que algo estoy haciendo mal porque no me funciona, podrías darme algún correo donde mandarte el archivo y le eches un vistazo?????

Hola de nuevo, la macro me saca una hoja con el nombre del código que le he especificado pero no traspasa las filas de ese calculo, se queda vacía, sabes cual puede ser el problema????

Pon un correo y desde hay te respondo

227.050 pts. Conocimientos avanzados de excel y programación en VBA

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas