Necesito una macro o las funciones anidadas para buscar un valor y regresar múltiples resultados en Excel

Necesito urgente su ayuda estoy trabajando en un archivo, para control de algunos equipos, el punto es que necesito que de una hoja denominada recordclientes que es mi base de datos, necesito extraer los equipos correspondientes a cada cliente es decir los equipos que tienen rentados, e intentado con una macro que encontré por aquí pero no me funciona

Private Sub ACEPTAR_CLICK()
    Set h1  =  Sheets("recordclientes")
    Set h2  =  Sheets("REPORTE")
    u2  =  h2.Range("B" &  Rows.Count).End(xlUp).Row
    If u2 < 2 Then u2 = 2
    h2.Range ("B" & u2 & ":I") & .ClearContents
    j  =  12
    celda  = "G3"
    Set r  =  h1.Columns("A")
    Set b  =  r.Find(h2.Range(celda),  lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell  =  b.Address
        Do
            h1.Range(h1.Cells(b.Row, "C"),  h1.Cells(b.Row, "L")).Copy
            h2.Cells(j, "C").PasteSpecial Paste:=xlValue

            j  =  j  +  1
            Set b  =  r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
End Sub

no se que tengo mal...

En mi hoja recordclientes que es la base de datos están los detos en las columnas de A a I pero solo me interesan los datos de B a I, en la hoja reporte que es donde pretendo obtener los datos filtrados por clientes están de la C a la L..

No se si me di a entender agradecería mucho una respuesta

1 Respuesta

Respuesta
1

24.01.17

Buenas noches, Sandra

Diría que esa macro no te será de utilidad para lo que explicas.

De hecho había empezado a ensayar alguna solución en Visual Basic que extrajera en otro rango la selección que hicieras.

Pero me dí cuenta de que eso lo hace MS Excel - y lejos más eficientemente que una macro- a través de sus Tablas Dinámicas.

Así que me tome el tiempo para reproducir un ejemplo y le agregué una de esas tablas quedando algo como esto:

Sólo imagina que donde dice Producto, sea Equipo. Creo que te darás una idea.

Al efecto de mandarte esta imagen, coloqué la tabla al pie, pero mientras la construyes puedes indicarle que la muestra en otra hoja.

Si te interesara como solución a tu necesidad, aquí te explico cómo se crea:

Una tabla dinámica es una herramienta de MS Excel para obtener un reporte agrupado de distintas maneras basado en datos incluidos en una tabla o base de datos.

Es dinámica porque, una vez armada, permite agregar, mover, o eliminar campos en ella hasta lograr el reporte deseado. Además, si cambian los datos en la base original, basta actualizarla (con botón derecho del mouse sobre ella y elegir Actualizar) para tener los resultados inmediatamente sin necesidad de fórmulas ni rutinas de VBA. Para armarla, sigue los siguientes pasos:

1.– Es necesario que cada columna tenga un título único, aún aquellas que estuvieran vacías.

Selecciona tu lista desde esta primera fila (títulos) hasta el último registro en ella. Continúa expandiendo hacia abajo este rango para que futuros registros (por si se agregaran) se incluyan en la Tabla dinámica.

Manténla seleccionada.

2.- Pulsa el botón en "insertar" encontrado en la barra del menú principal y selecciona "Tabla dinámica".

3.- Una ventana pide seleccionar la fuente de los datos. Marca "Lista o base de datos de MS Excel".

4.- Si hubieras dejado tu rango seleccionado, se asumirá ésta como la base de datos fuente. En caso contrario, puedes seleccionar el área en este paso.

Allí también le indicas dónde quieres ubicarla.

5.- Verás que te dejó el Diseño en blanco:

Y se mostrarán los títulos de las columnas disponibles. Verás, por ejemplo, en tu caso:

6.- El próximo paso depende de ti, porque esto es muy "personalizable". Sólo tienes que arrastrar etiquetas al área donde quieres que ellas sean mostradas.

Por ejemplo:

- Arrastra la etiqueta "Unidad de Negocios" y "Mes/Año" al área de Filtros.

Son los selectores que habías mencionado. Allí te deja disponibles todas las opciones de selección

- Arrastra las etiquetas "Cliente", "Producto" (o sea "Equipo") al área de FILAS.
Con botón derecho del mouse sobre las etiquetas de las columnas en la tabla podrás quitarles los subtotales que suele colocar (o agregárselos si no estuvieren).

- Luego arrastrarla etiqueta "Cantidad" al área de los VALORES

Esto es para que los Sume. Si dijera "Contar de" haz click derecho sobre ese campo y, en configuración del campo de Valor, elije "Sumar" y allí mismo puedes cambiar el título y darle formato a los números que vayan a aparecer.

(Nota: otras funciones posibles sobre campos numéricos son:
Contar/Promedio/Min/Max//Producto/ entre otros)

Así conseguirás una tabla donde podrás mostrar los equipos de cada cliente para sólo los casos seleccionados, o para todos.

Verás en la parte superior de la primera imagen un botón que dice "Diseño del informe", que sirve para modificar el formato de tu tabla. Como viene con autoformato, yo suelo cambiar a Formato Tabular, pero puedes dejarlo como mejor te luzca.

Y será una solución más rápida que intentar que alguien programe una macro sin tener muchas referencias de cómo está estructurada tu base.

Espero que te haya ayudado (y pronto)

Saludos

Fernando

.

¡Gracias! 

Lo intentare ya que no soy buena con las tablas dinámicas gracias una vez mas

.

Ok, Sandra

Es sólo cuestión de animarse y amigarse con ellas.

Luego verás lo potente que son y lo excelente de la solución.

De momento creo que es la mejor opción, sobre todo si ya tienes una base con los datos convenientemente organizados.

Éxitos con ello.

Saludos

Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas