Búsqueda de datos

Aretradeser

Board Regular
Joined
Jan 16, 2013
Messages
176
Office Version
  1. 2013
Platform
  1. Windows
En una hoja tengo unos datos, en 14 columnas, todas ellas tituladas a partir de A1. A través de un código realizo una búsqueda de datos dentro de esta hoja. Este código realiza una búsqueda en todo la hoja, a partir del dato introducido en un InputBox, y me copia en otra hoja todas las filas en las que aparece el nombre buscado, con sus correspondientes columnas (13). Me gustaría realizar algunas modificaciones:

1.- Que al realizar esta búsqueda, en vez de buscar en toda la Hoja, únicamente lo haga en la columna "G".
2.- Que al realizar la copia en la hoja, comience en la celda "A3", incluyendo los títulos; y, por último,
3.- En la celda "C1", de esa misma hoja, me copie el dato buscado (el introducido previamente en el InputBox)
CODIGO:
HTML:
Dim algunaCoincidencia As Boolean
Dim Fila As Integer
Dim sede As String
Dim i As Integer, uFila As Integer, uColumna As Integer
Dim Hoja As Worksheet
Dim Rango As Range
Sub BuscarSede()

sede = InputBox("Introduzca el texto de busqueda")
sede = "*" & sede & "*" 'Añadimos los caracteres comodin al principio y al final

For Each Hoja In ThisWorkbook.Sheets
   If Hoja.Name <> "Hoja2" Then 'Esta es la hoja de resultados
      Hoja.Activate
      EncontrarSede Hoja
   End If
Next

If algunaCoincidencia = False Then
   MsgBox ("No se han encontrado coincidencias")
End If

End Sub

Sub EncontrarSede(Hoja As Worksheet)
On Error GoTo salir

algunaCoincidencia = True

'Buscamos la última fila y columna de la hoja para acotar el rango
uFila = Hoja.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
uColumna = Hoja.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

'Acotamos el rango
Set Rango = Range(Hoja.Cells(1, 1), Hoja.Cells(uFila, uColumna))

For Each celda In Rango 'Buscamos en todo el rango
   If UCase(celda.Value) Like UCase(sede) Then 'Comparamos por parecido a
      On Error GoTo Hoja2Vacia
      
      'Buscamos primera fila vacía en Hoja2
      Fila = Hoja2.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
      
      'Copiamos la fila de la Hoja en la Hoja2
      Hoja.Rows(celda.Row).Copy Hoja2.Rows(Fila)
      
      'Hemos encontrado coincidencia
      algunaCoincidencia = True
   End If
Next
Exit Sub '-----------------------------------------------

Hoja2Vacia:
   Fila = 2
   Resume Next
salir:
End Sub
Saludos
 

Excel Facts

Formula for Yesterday
Name Manager, New Name. Yesterday =TODAY()-1. OK. Then, use =YESTERDAY in any cell. Tomorrow could be =TODAY()+1.

Forum statistics

Threads
1,215,430
Messages
6,124,851
Members
449,194
Latest member
HellScout

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top