Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro para buscar desde una hoja datos de otra

5,536 views
Skip to first unread message

Jorge

unread,
Oct 30, 2009, 6:19:01 PM10/30/09
to
Hola. Como se podría crear una macro que desde una hoja, por ejemplo Hoja1,
busque los datos en una columna determinada, por ejemplo b, de la hoja 2.
Gracias

H�ctor Miguel

unread,
Oct 30, 2009, 11:53:48 PM10/30/09
to
hola, Jorge !

> Como se podria crear una macro que desde una hoja, por ejemplo Hoja1


> busque los datos en una columna determinada, por ejemplo b, de la hoja 2.

op1: usando el metodo <objeto hoja>.Cells.Find(........
op2: usando funciones de busqueda desde vba: WorksheetFunction.VLookup(.........
op_n: ??? (que es exactamente lo que necesitas resolver ?)

saludos,
hector.


Jorge

unread,
Nov 1, 2009, 10:46:04 AM11/1/09
to
Hola Hector Miguel: Lo que quiero es estar en la hoja1, que al hacer click en
el metodo abreviado de la macro, por ejemplo, Ctrl+b, se habra el cuadro de
dialogo (de la ficha inicio) Buscar y seleccionar; ingresar el dato a buscar
en dicho cuadro de dialogo, y que la busqueda se realice en la columna b de
la hoja2. Gracias

"Héctor Miguel" escribió:

> .
>

H�ctor Miguel

unread,
Nov 1, 2009, 4:30:38 PM11/1/09
to
hola, Jorge !

> Lo que quiero es estar en la hoja1, que al hacer click en el metodo abreviado de la macro, por ejemplo, Ctrl+b

> se habra el cuadro de dialogo (de la ficha inicio) Buscar y seleccionar; ingresar el dato a buscar en dicho cuadro de dialogo

> y que la busqueda se realice en la columna b de la hoja2 ...

prueba con una macro +/- como la siguiente:

Sub mi_Busqueda()
On Error GoTo NoExiste
With Worksheets("hoja2").Columns("b")
With .Cells.Find(InputBox("Introduce el dato a buscar"))
.Parent.Activate
.Select
End With
End With
Exit Sub
NoExiste:
MsgBox "El dato solicitado no existe !!!"
End Sub

saludos,
hector.

__ previos __

Jorge

unread,
Nov 2, 2009, 12:20:01 PM11/2/09
to
Hola Hector Miguel: Probé con la macro, pero sucede lo siguiente: ctrl+b; se
abre el cuadro de dialogo buscar y reemplazar; se ingresa el dato a
buscar,click en buscar todos y se desplaza a la hoja 2, encontrando el dato.
Te comento que antes cambie en opciones a buscar en el Libro.-
La idea es que no se cambie de hoja, informando los resultados de la hoja2
en la Hoja1.
Otra cosa que me llamo la atención, y solo por curiosidad, es que el
InputBox("Introduce el dato a buscar")), no aparece como Introduce el dato a
buscar y MsgBox "El dato solicitado no existe !!!", tampoco aparece,
señalando en cambio "No se pueden encontrar los datos de la busqueda". Pero
te insisto, es solo curiosidad, porque supongo que deberian aparecer los
textos que tu señalaste en la macro ¿o no?. Gracias.--

"Héctor Miguel" escribió:

> .
>

H�ctor Miguel

unread,
Nov 2, 2009, 2:59:53 PM11/2/09
to
hola, Jorge !

> Probe con la macro, pero sucede lo siguiente: ctrl+b; se abre el cuadro de dialogo buscar y reemplazar


> se ingresa el dato a buscar,click en buscar todos y se desplaza a la hoja 2, encontrando el dato.
> Te comento que antes cambie en opciones a buscar en el Libro.-
> La idea es que no se cambie de hoja, informando los resultados de la hoja2 en la Hoja1.

> Otra cosa que me llamo la atencion, y solo por curiosidad, es que el InputBox("Introduce el dato a buscar"))
> no aparece como Introduce el dato a buscar y MsgBox "El dato solicitado no existe !!!" tampoco aparece
> senalando en cambio "No se pueden encontrar los datos de la busqueda".
> Pero te insisto, es solo curiosidad, porque supongo que deberian aparecer los textos que tu senalaste en la macro o no?.

1) en tanto NO asignes la combinacion de teclas {ctrl}+b a "la macro" (en el dialogo de las opciones de macro)
el atajo seguira "haciendo lo suyo": lanzar el dialgo integrado de buscar (y reemplazar) en vez de ejecutar "la macro"

2) si no quieres que se cambie de hoja, entonces falta un poco mas de informacion (p.e.)
- una vez que se encuentre el dato buscado (si existe)... que esperas que haga la macro ?
- buscas una funcionalidad similar a la de la funcion buscarv(.. ?
- de que columna se rescata algun dato a mostrar ?
- depositar algun dato en alguna celda ?
- mostrar un cuadro de mensaje ?
- ???

saludos,
hector.


Jorge

unread,
Nov 3, 2009, 8:28:01 AM11/3/09
to
Hola hector Miguel: 1. Si, tienes razón: asigne ctrl+b en opciones de macro,
y se ejecuta la macro como tu la ideaste (antes la había puesto solo en
metodo abreviado). 2. Pero, visualmente, me gusta mas el cuadro de dialogo
"Buscar y reemplazar", asi es que desearia conservar esa forma. Ahora bien,
encontrado el dato, ¿que hará la macro?. Simplemente nada. Lo que sucede es
que me preguntan habitualmente, mientras estoy confeccionando Estado.xls,
cuando se dictó una resolución. Eso me obliga a cambiarme de hoja a Historico
y realizar la operación, cerrar y volver a la Hoja1 (Estado Diario). Es mas
sencillo (que es la idea de automatizar) ctrl+b, ingreso el dato, informo que
tales días, cierro y estoy en la misma hoja en la que estaba trabajando.
Gracias

"Héctor Miguel" escribió:

> .
>

H�ctor Miguel

unread,
Nov 4, 2009, 4:48:58 PM11/4/09
to
hola, Jorge !

- para conservar el dialogo (integrado) de "buscar y reemplazar", no hace falta macro (simplemente pulsa ctrl+B)
- para que la macro haga "simplemente nada"... (creo que) la mejor macro es que no exista macro (?) :))

otras posibilidades ?... (p.e.)

- si el dato por el que se pregunta existe SOLO una vez en la hoja donde se busca (???)
- poner en una celda el dato que se busca y en otra funciones de busqueda (buscarv(... ?)

- manipular por macro el dialogo integrado (de buscar y reemplazar) y establecer un tiempo para "el regreso" (a la hoja activa)
- esto pudiera resultar en que el tiempo establecido... o se queda corto... o resulta excesivo (???)

- usar un cuadro de mensaje para informar el resultado de la busqueda (ya sea que ese encuentra el dato o no)

(probablemente salgan mas alternativas, pero... cual preferirias usar ?)

saludos,
hector.

__ OP __
> ... asigne ctrl+b en opciones de macro, y se ejecuta la macro ...
> ... visualmente, me gusta mas el cuadro de dialogo "Buscar y reemplazar", asi es que desearia conservar esa forma.
> ... encontrado el dato, que hara la macro?. Simplemente nada ...
> ... me preguntan habitualmente, mientras estoy confeccionando Estado.xls, cuando se dicto una resolucion.
> Eso me obliga a cambiarme de hoja a Historico y realizar la operacion, cerrar y volver a la Hoja1 (Estado Diario).
> Es mas sencillo (que es la idea de automatizar) ctrl+b, ingreso el dato, informo que tales dias
> cierro y estoy en la misma hoja en la que estaba trabajando...


Jorge

unread,
Nov 5, 2009, 8:56:02 AM11/5/09
to
Hola Héctor Miguel: Si conservo el cuadro de dialogo integrado de Buscar y
reemplazar, al pulsar Ctrl+b, ingreso el dato, busca y me desplaza de hoja, y
lo que quiero lograr es que no me desplace de hoja, es decir, que solo me
muestre que en la Hoja2 existen tales y cuales resultados (o no existen),
pero permaneciendo en la Hoja1.-
Tal como tu dices, manipular por macro el tiempo del cuadro de dialogo
integrado, podría resultar muy corto o muy largo, por lo que no me parece
adecuado para lo que busco.-
El dato puede existir mas de una vez, y de hecho, lo mas probable es que en
el transcurso de un periodo de un mes, aparezca 4 o 5 veces.-
Usar un cuadro de mensajes, podría ser una opción a explorar, ya que ignoro
como podría quedar visulamente y/o funcionar.-
Espero tus atentos comentarios.-
Saludos y como siempre, gracias.-

"Héctor Miguel" escribió:

> .
>

H�ctor Miguel

unread,
Nov 5, 2009, 10:37:01 PM11/5/09
to
hola, Jorge !

> ... Tal como tu dices, manipular por macro el tiempo del cuadro de dialogo integrado
> podria resultar muy corto o muy largo, por lo que no me parece adecuado para lo que busco.-

ok, enterado ! :))

> El dato puede existir mas de una vez, y de hecho, lo mas probable es que en el transcurso de un periodo de un mes, aparezca 4 o 5 veces.-

> Usar un cuadro de mensajes, podria ser una opcion a explorar, ya que ignoro como podria quedar visulamente y/o funcionar.- ...

por que no porporcionas informacion mas completa y detallada desde el principio (???) - me explico-

- que tiene que ver "el dato" que buscas con "... el transcurso de un mes ..." (???)
- acaso necesitas tambien delimitar la busqueda en algun rango de fechas ?
- si utilizaras varias funciones buscarv(... => que columna(s) tiene(n) el(los) dato(s) que te interesa mostrar ?

como se podria (RE)crear un modelo de trabajo (exactamente) "igual al tuyo" ?
(SIN tener que adivinar o suponer el arreglo y la necesidad que tu tienes en la realidad ?)

saludos,
hector.


javiercantodea

unread,
Nov 11, 2009, 11:53:52 PM11/11/09
to
en ese codigo como le hago para que me imprima el valor de la celda en donde encontro eso
osea que mande a una caja de texto el valor k tiene la celda seleccionada

H?ctor Miguel wrote:

hola, Jorge !
01-nov-09

hola, Jorge !


prueba con una macro +/- como la siguiente:

Sub mi_Busqueda()
On Error GoTo NoExiste
With Worksheets("hoja2").Columns("b")
With .Cells.Find(InputBox("Introduce el dato a buscar"))
.Parent.Activate
.Select
End With
End With
Exit Sub
NoExiste:
MsgBox "El dato solicitado no existe !!!"
End Sub

saludos,
hector.

__ previos __

Previous Posts In This Thread:

EggHeadCafe - Software Developer Portal of Choice
Silverlight Line Of Business Applications With Offline WPF Versions
http://www.eggheadcafe.com/tutorials/aspnet/100f610c-3417-4be5-a21c-2025234b4e01/silverlight-line-of-busin.aspx

javiercantodea

unread,
Nov 12, 2009, 12:00:41 AM11/12/09
to
en ese codigo como le hago para que me imprima el valor de la celda en donde encontro eso
osea que mande a una caja de texto el valor k tiene la celda seleccionada

H?ctor Miguel wrote:

hola, Jorge !
01-nov-09

hola, Jorge !


prueba con una macro +/- como la siguiente:

Sub mi_Busqueda()
On Error GoTo NoExiste
With Worksheets("hoja2").Columns("b")
With .Cells.Find(InputBox("Introduce el dato a buscar"))
.Parent.Activate
.Select
End With
End With
Exit Sub
NoExiste:
MsgBox "El dato solicitado no existe !!!"
End Sub

saludos,
hector.

__ previos __

Previous Posts In This Thread:

EggHeadCafe - Software Developer Portal of Choice

ASP.NET Request Logger and Crawler Killer
http://www.eggheadcafe.com/tutorials/aspnet/a988f8c3-f69e-4ad2-a2e9-f9e01867769c/aspnet-request-logger-an.aspx

H�ctor Miguel

unread,
Nov 12, 2009, 12:45:34 AM11/12/09
to
hola, Javier !

> en ese codigo como le hago para que me imprima el valor de la celda en donde encontro eso
> osea que mande a una caja de texto el valor k tiene la celda seleccionada

cambia esta parte:

.Parent.Activate
.Select

por esta otra:

<aqui tu caja de texto> = .Value

(dependiendo de "que" sea y donde este tu caja de texto ???)

saludos,
hector.

__ OP __

Jorge

unread,
Nov 23, 2009, 2:59:03 PM11/23/09
to
Hola Hector Miguel: Había estado ausente unos días y no había visto tu última
respuesta.- Lo que se necesito solucionar dice relación con la el Libro
Estado.xls y la hoja Historico de él, que tu me ayudaste a perfeccionar.
Entonces, imagina que estoy trabajando en Estado.xls y a cada rato alguien
llega a preguntar en que fecha se incluyó el rol xxx en el estado. Eso me
obliga a cambiarme de hoja para realizar la busqueda, encontrarla, cerrarla,
etc. En cuanto al tema del mes, en realidad es en toda la hoja historico, sin
estar limitado al tiempo, solo trataba de explicarte, frente a tu consulta de
si era un dato unico el buscado, que no es asi: el dato se repite en
distintas fechas. La columna que tiene los datos es la B de la hoja
Historico. Saludos.-

"Héctor Miguel" escribió:

> .
>

H�ctor Miguel

unread,
Nov 24, 2009, 2:23:37 AM11/24/09
to
hola, Jorge !

> ... estoy trabajando en Estado.xls y a cada rato alguien llega a preguntar en que fecha se incluyo el rol xxx en el estado.
> Eso me obliga a cambiarme de hoja para realizar la busqueda, encontrarla, cerrarla, etc...

copia/pega (o escribe) la siguiente macro en el mismo modulo donde esta la macro anterior
(la ejecutas cada vez que te pregunten por algun "rol" desde cualquiera de las hojas -Estado p.e.-)

Sub Busca_Fecha_Rol()
Dim Rol As Integer, Fila As Integer, Msj As String
Rol = CInt(Trim(InputBox("Ingresa el Rol a buscar...")))
If Rol = 0 Then Exit Sub Else On Error GoTo NoExiste
Msj = "El Rol Buscado: " & Rol
With Worksheets("historico")
Fila = .Columns("b").Cells.Find(Rol).Row
MsgBox Msj & " fue registrado el: " & Format(.Range("a" & Fila), "dd-mmm-yy")


End With
Exit Sub
NoExiste:

MsgBox Msj & " No existe !!!"
End Sub

saludos,
hector.


jmanue...@gmail.com

unread,
Mar 23, 2020, 4:26:36 PM3/23/20
to
buenas tardes.
Como podría crear una macro que con un userform, pueda buscar un dato en varias hojas y pueda copiar esa información en la hoja donde esta el boton que activa el userform
0 new messages