Se podrá hacer en Excel

Amigos tengo una consulta, Tengo el Siguiente Problema en Excel y no se como resolverlo, me explico:
Tengo una planilla con los siguientes datos
Codigo     Nombre     Vendedor         Nom_Vendedor               Visitas         Fecha_Visita
a1111 xxxxxx 11111 aaaaaaaaaaaaaaaaaa 1 01-01-2010
a1111 xxxxxx 11111 aaaaaaaaaaaaaaaaaa 1 03-01-2010
A1111 XXXXXX 99999 ZZZZZZZZZZZZZZZZZZ 2 04-01-2010
B1111 YYYYYY 22222 BBBBBBBBBBBBBBBBBB 1 01-01-2010
B1111 YYYYYY 22222 BBBBBBBBBBBBBBBBBB 1 02-01-2010
C1111 WWW 33333 CCCCCCCCCCCCCCCC 1 01-01-2010
D1111 ZZZZZ 44444 DDDDDDDDDDDDDDDD 1 05-01-2010
e1111 tttttt 55555 eeeeeeeeeeeeeeeeee 1 07-01-2010
Necesito que a través de un filtro, en esta caso sea por el nombre del cliente, me entregue el siguiente resultado.
Si mi filtro principal es el nombre y en mi filtro selecciono el nombre XXXXXX el resultado en la misma hoja o en otra hoja del libro me entregue lo siguiente:
Nombre  Codigo  Vendedor        Nom_Vendedor                 Visitas         Fecha_Visita
xxxxxx a1111 11111 aaaaaaaaaaaaaaaaaa 1 01-01-2010
                           11111 aaaaaaaaaaaaaaaaaa 1 03-01-2010
                           99999 ZZZZZZZZZZZZZZZZZZ 2 04-01-2010
Si mi filtro sea el nombre YYYYYY el resultado en la misma hoja o en otra hoja del libro me entregue lo siguiente:
Nombre  Codigo   Vendedor         Nom_Vendedor             Visitas        Fecha_Visita
YYYYYY B1111 22222 BBBBBBBBBBBBBBBB 1 01-01-2010
                             22222 BBBBBBBBBBBBBBBB 1 02-01-2010
No se si me explique bien, que mediante un filtro o una función pueda obtener un grupo de registros y no solo un registro.-
Por la colaboración muchas gracias
Respuesta
1
Prueba con este código.
Está basado en la suposición que la información se encuentra en la página "Datos" en las columnas A-F y a partir de la línea 1 (en la 1 la cabecera).
La salida la deja en una página que tiene que llamarse "Listado".
Option Explicit
Sub generaListadoPorNombre()
    Dim shOri As Worksheet
    Dim shDes As Worksheet
    Dim nomBuscar As String
    Dim nLinOri As Long
    Dim nLinDes As Long
    ' Leemos el nombre a buscar
    nomBuscar = InputBox("Nombre a Buscar:", "Listado por nombre")
    If nomBuscar = "" Then Exit Sub
    ' Páginas de origen y destino
    Set shOri = Sheets("Datos")
    Set shDes = Sheets("listado")
    ' Borramos la página destino
    shDes.Cells.Delete
    nLinDes = 0 ' Llevamos 0 lineas escritas
    ' Leemos todos los datos desde la línea 2 (suponemos que la 1 tiene las cabeceras)
    For nLinOri = 2 To shOri.Cells.SpecialCells(xlCellTypeLastCell).Row
        If shOri.Cells(nLinOri, 2) = nomBuscar Then
            If nLinDes = 0 Then
                ' Copiamos la cabecera y la primera línea completa
                copiaDatosLinea shOri, shDes, 1, 1, True, False
                copiaDatosLinea shOri, shDes, nLinOri, 2, True, True
                nLinDes = 2
              Else
                nLinDes = nLinDes + 1
                copiaDatosLinea shOri, shDes, nLinOri, nLinDes, False, True
            End If
        End If
    Next nLinOri
    MsgBox "Proceso terminado"
End Sub
Private Sub copiaDatosLinea(ByRef shOri As Worksheet, ByRef shDes As Worksheet, ByVal nOri As Long, ByVal nDes As Long, ByVal snColAB As Boolean, ByVal snCopiarFormato As Boolean)
    Dim i As Integer
    If snColAB Then ' Ponemos las 2 primeras columnas
        shDes.Cells(nDes, 1) = shOri.Cells(nOri, 2) ' Copiamos la columna B en la A
        If snCopiarFormato Then shDes.Cells(nDes, 1).NumberFormat = shOri.Cells(nOri, 2).NumberFormat
        shDes.Cells(nDes, 2) = shOri.Cells(nOri, 1) ' Copiamos la columna A en la B
        If snCopiarFormato Then shDes.Cells(nDes, 2).NumberFormat = shOri.Cells(nOri, 1).NumberFormat
    End If
    For i = 3 To 6 ' Copiamos de la columna C a la F
        shDes.Cells(nDes, i) = shOri.Cells(nOri, i)
        If snCopiarFormato Then shDes.Cells(nDes, i).NumberFormat = shOri.Cells(nOri, i).NumberFormat
    Next i
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas