Macro para buscar un valor determinado en una columna y que copie la fila correspondiente a la celda donde se encuentra el valor

Necesito una macro que busque un valor (ese valor me gustaría que pudiera ser de una celda donde tengo una lista desplegable y se pueden elegir varios valores) en una columna donde se encuentran ese valor varias veces junto a otros (el resto de las opciones de la lista desplegable) y que cuando lo encuentre, copie y pegue en otra hoja la fila o filas donde se encuentre ese valor.

Por ejemplo, en mi lista tengo Proyecto 1, Proyecto 2, Proyecto 3, Proyecto 4 y Proyecto 5.En una hoja hago la selección de una de esta opciones: Proyecto 2.

Quiero que vaya a otra hoja donde en una columna específica debe buscar todas las celdas que contiene el valor de celda "Proyecto 2" y que copie y pegue en otra hoja las filas correspondientes a esas celdas.

He intentado hacerlo con fórmulas como:

=SI(A2:A60=N1; FILA(A2:A60);"") - para que me busque el orden

=INDICE($B$2:$B$60;K.ESIMO.MAYOR($M$3:$M$61;FILA(N3)-1)) - para que me convierta el orden en el valor de la celda.

Pero me es imposible llegar al resultado que quiero.

2 respuestas

Respuesta
2

H o l a: Te anexo la macro.

Según tus comentarios necesitas 3 hojas, una para poner la lista de validación, la 2 donde tienes tus datos y la 3 para poner el resultado.

Cambia en la macro "Hoja1", "Hoja2" y "Hoja3" por los nombres de tus hojas

También cambia en la macro "B2" por la celda donde tienes tu lista de validación

Y por último, cambia en la macro "A" por la columna donde se va a realizar la búsqueda.

Sub Buscar_valores()
'---
'   Por.Dante Amor
'---
    Set h1 = Sheets("Hoja1")        'Hoja con la lista de validación de datos
    Set h2 = Sheets("Hoja2")        'Hoja con los proyectos
    Set h3 = Sheets("Hoja3")        'Hoja resultado
    celda = "B2"                    'celda con la lista de validación
    col = "A"                       'columna específica con los proyectos
    '
    h3.Rows(2 & ":" & Rows.Count).Clear
    valor = h1.Range(celda)
    If valor = "" Then
        MsgBox "Falta poner el valor a buscar"
        Exit Sub
    End If
    '
    j = 2
    Set r = h2.Columns(col)
    Set b = r.Find(valor, lookat:=xlWhole)
    If Not b Is Nothing Then
        celda = b.Address
        Do
            h2.Rows(b.Row).Copy h3.Rows(j)
            j = j + 1
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> celda
    End If
    h3.Select
    MsgBox "Fin del proceso"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Buscar_valores
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

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

Buenos días,

Muchas gracias, pero no se por qué cuando la ejecuto en la hoja 3 donde tiene que poner los resultados, me borra todo. =(

He grabado una macro, que creo que el proceso es más sencillo: voy a la celda de la lista desplegable, copio el contenido de esa celda, me voy a la hoja donde tengo los proyectos y en el filtro de la columna pego el nombre que he copiado de la lista. Copio las filas que me quedan y las pego en la tercera hoja.

El problema que tengo haciendo esto, es que al copiar el contenido que en ese momento hay en la lista desplegable, se queda por defecto ese literal, y no me sirve para cuando elijo otro valor en la lista. ¿Como podría poner ese dato dinámico para que copie lo que en cada momento haya en esa lista?

Adjunto la macro:

------------------------------------------------------------------------------------------------------------------------------------------

Sub Proyectos()
'
' Proyectos Macro
'
' Acceso directo: Ctrl+Mayús+Q
'
    Range("B11:H11").Select
    ActiveCell.FormulaR1C1 = "Proyecto 1"
    Sheets("Datos 2 ").Select
    ActiveSheet.Range("$A$1:$I$60").AutoFilter Field:=1, Criteria1:= _
        "Proyecto 1"
    Range("B2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Sheets("Hoja 2").Select
    Range("B11").Select
    ActiveSheet.Paste
End Sub

----------------------------------------------------------------------------------------------------------------------------------------------

Range("B11:H11").Select -> es donde se encuentra la lista desplegable.

ActiveCell.FormulaR1C1 = "Proyecto 1" -> Aqui es donde me pega literalmente la opción que he cogido en la lista, y lo que me gustaría hacer es que dependiendo del valor que coja en esa lista, ejecute la macro y copie y filtre lo que hay en ese momento.

Muchísimas gracias por todo.

Tu petición es esta:

"y que cuando lo encuentre, copie y pegue en otra hoja la fila o filas donde se encuentre ese valor"

Lo que hace la macro es: borrar la hoja3, buscar el proyeto1, copiar las filas del proyecto1 en la hoja3, regresar a la hoja1, cambiar al siguiente proyecto, borrar la hoja3, buscar el proyeto2, copiar las filas del proyecto2 en la hoja3, regresar a la hoja1 ...

Lo que no explicaste es cómo pegar las filas encontradas en la hoja3.

Envíame tu archivo y me explicas detalladamente lo que quieres hacer con las filas del proyecto1, las del proyecto2.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Ana Solfer” y el título de esta pregunta.

Respuesta

H o l a 

Puedes mostrar la hoja para ver como está organizado tu información

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas