Buscar y pegar datos.

Hola, vi la solución de esta pregunta que hicieron el año pasado, debido a que estoy metido en el mismo problema. Ya apliqué el código que enviaron de solución, pero la solución hace lo siguiente: por ejemplo, si estoy buscando en una lista el número "3" el resultado que arrojará será el de pegar todos los que haya encontrado en la lista que contengan el número "3", el "33", "534", "1003", etc porque estos datos contienen el número buscado., PERO, lo que yo necesito es que me pegue únicamente aquellos registros que tienen el número 3 sólito.
A propósito, el código que enviaron de solución anterior fue:
Sub Botón1_Haga_clic_en()
Dim lngUltimaFila As Long
Dim strObjetoBuscar As String
Dim lngResultado As Long
Dim lngColumna As Long, lngFila As Long
Dim lngPegarColumna As Long, lngPegarFila As Long
Dim x As Integer, n As Integer
Range("G5:H4000").ClearContents
Range("A1").SpecialCells(xlLastCell).Select
lngUltimaFila = ActiveCell.Row
'COLUMNA + FILA DONDE EMPEZAR/TERMINAR LA BUSQUEDA
lngColumna = 2
lngFila = 5
'COLUMNA + FILA DONDE EMPEZAR A PEGAR RESULTADOS
lngPegarColumna = 6
lngPegarFila = 5
strObjetoBuscar = Range("G2").Text
If strObjetoBuscar = "" Then GoTo 99
'MINUSCULAS
strObjetoBuscar = LCase(strObjetoBuscar)
'BUCLE: REALIZAR BUSQUEDA
For n = lngFila To lngUltimaFila
'EVALUACIÓN
lngResultado = InStr(1, Cells(n, 2), strObjetoBuscar, vbTextCompare)
'COPIAR /PEGAR
If lngResultado > 0 Then
Range(Cells(n, 2), Cells(n, 4)).Copy
Range(Cells(lngPegarFila, lngPegarColumna), Cells(lngPegarFila, ingpegarcolumna + 2)).Select
ActiveSheet.Paste
lngPegarFila = lngPegarFila + 1
End If
Next n
'APARCAR
Application.CutCopyMode = False
Range("G2").Select
99:
End Sub
Muchas gracias,. Espero me puedan ayudar.
Agustín HErnández
Hola buen día:
No se si me puedan ayudar
Necesito crear un macro en excel, que su función sea la siguiente..
Tengo información de algunas tiendas lo que necesito es que al momento de insertar un valor numérico (el numero de la tienda) en una celda esta me filtre y pegue las veces que encuentre esa tienda y la información que contenga.
Un ejemplo seria así
No tienda Nombre de tienda Tipo
1 x as
Luego al momento de introducir algún dato en la celda especifica, me pegue los datos de los iguales que encontró, anteriormente había encontrado un macro para esto pero no me ha funcionado, aun no entiendo porque.
Sub Buscar()
'dimensiones
Dim lngUltimaFila As Long
Dim strObjetoBuscar As String
Dim lngResultado As Long
Dim lngColumna As Long, lngFila As Long
Dim lngPegarColumna As Long, lngPegarFila As Long
Dim x As Integer, n As Integer
'quitar resultados anteriores
Range("G5:H4000").ClearContents
'columna + fila donde empezar/terminar búsqueda
lngColumna = 2
lngFila = 5
lngUltimaFila = Columns(lngColumna). _
Range("A65536").End(xlUp).Row
'columna + fila donde empezar a pegar resultados
lngPegarColumna = 6
lngPegarFila = 5
'objeto a buscar
strObjetoBuscar = Range("G2").Text
If strObjetoBuscar = "" Then GoTo 99
'minúsculas
strObjetoBuscar = LCase(strObjetoBuscar)
'bucle: realizar búsqueda
For n = lngFila To lngUltimaFila
'evaluación
lngResultado = InStr(1, Cells(n, 3), _
strObjetoBuscar, vbTextCompare)
'copiar/pegar
If lngResultado > 0 Then
Range(Cells(n, 2), Cells(n, 4)).Copy
Range( _
Cells(lngPegarFila, lngPegarColumna), _
Cells(lngPegarFila, lngPegarColumna + 2)) _
.Select
ActiveSheet.Paste
lngPegarFila = lngPegarFila + 1
End If
Next n
'aparcar
Application.CutCopyMode = False
Range("G2").Select
99:
End Sub

Espero me pueda ayudar.
Por su atención gracias

1 respuesta

Respuesta
1
Te dejo otro tipo de rutina, para que la adaptes a tu hoja, modificando las referencias:
Sub BuscarVs()
'variables para ser configuradas por el usuario:
rgobusq = "B8:B500" 'Rango donde debe efectuarse la búsqueda
destino = "Hoja2" ' Hoja donde está el rango de búsqueda
fila = 3 'fila desde donde comenzará a dejar los datos en Hoja2
'se establece el valor a buscar
dato = ActiveSheet.Range("C3").Value 'celda donde está el dato a buscar
'se realiza la primer búsqueda creando un objeto resultante llamado 'c'
Set c = ActiveSheet.Range(rgobusq).Find(dato, LookIn:=xlValues, lookAt:=xlWhole)
'si la búsqueda fue exitosa se guarda la dirección
If Not c Is Nothing Then
PrimCoinc = c.Address
'comienza el bucle de lo que debe realizarse en cada resultado encontrado
Do
c.Copy Destination:=Sheets(destino).Cells(fila, 1) 'se copia en col 1 = A
c.Offset(0, 1).Copy Destination:=Sheets(destino).Cells(fila, 2) 'se copia en col 2 el dato de la col de al lado
fila = fila + 1
'se realiza la búsqueda siguiente
Set c = ActiveSheet.Range(rgobusq).FindNext(c)
'el bucle continúa mientras se encuentre coincidencias y NO sea la primer celda encontrada
Loop While Not c Is Nothing And c.Address <> PrimCoinc
Else
'devuelve mensaje si la búsqueda no fue exitosa
MsgBox "El valor " & dato & " NO fue encontrado en el rango indicado", vbInformation, "Resultado"
End If
Set c = Nothing 'se libera la variable
End Sub
* Macro extraída de mi manual 400MacrosPlus
Si el tema quedó concluido, no dejes la consulta abierta. Otros usuarios no pueden consultar si todos quedamos con consultas pendientes. Gracias
Sdos
Elsa
Elsa, quiero agradecer infinitamente tu flexibilidad en compartir tus conocimientos con las personas., La macro ahora me funciona a la perfección gracias a ti., recibe un afectuoso saludo, .Agustín.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas