Excel - Busqueda avanzada con macros

   
Vista:

Busqueda avanzada con macros

Publicado por Frank (6 intervenciones) el 21/07/2009 02:57:15
Estimados

Necesito un codigo en VBA para realizar una busqueda avanzada. P/E

Tengo en la celda A1 el valor de 1 y en la B1 el texto de + y en la C1 el valor de 2 , luego las concateno en la celda D1 para que me de 1+2

El valor de referencia D1 lo uso para realizar una busqueda con la función .find en un rango X y lo busca perfectamente, pero si en la celda A1 pongo 2 y en la C1 pongo 1, D1 = 2+1 me manda al depurador

Como puedo hacer de que la busqueda la haga sea 2+1 o 1+2 si al final el orden de los factores no altera el producto.

Gracias anticipadas

Frank
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Busqueda avanzada con macros

Publicado por Abraham Valencia (2418 intervenciones) el 21/07/2009 21:55:04
Creo que para entenderte mejor, seria bueno poder ver el archivo en cuestion: "Cuelgalo" de algun servidor y envia el enlace

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda avanzada con macros

Publicado por Frank (6 intervenciones) el 22/07/2009 19:43:41
A ver si les sirve este ejemplo

http://www.uploadyourfiles.de/download.php?file=640busqueda avanzada.xls

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda avanzada con macros

Publicado por Abraham Valencia (2418 intervenciones) el 23/07/2009 04:02:50
OJO, esstas confundiendo un rpincipio matematico ("el orden de ...") con una cuestion gramatical/ortografica.

Si tu realizas una busqueda de texto (que en la practica es lo que ya tienes ahi), es obivo que no es lo mismo bucar "Abraham" que "Maharbra". Una opcion que tienes es invertir, previo al Find, lo concatenado alternativo y ahi recien proceder a la busqueda, que terminaria siendo similar al texto original

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Busqueda avanzada con macros

Publicado por JuanC (1054 intervenciones) el 23/07/2009 13:49:53
ya que no son muchos datos podés buscar celda x celda con un bucle,
comparando si en la celda se encuentra cada uno de los sumandos
Ej:

Sub test()
Dim s$, s1$, s2$, cell As Range
Dim t$, t1$, t2$
s = "b1 + a1"
s1 = UCase(Replace(Split(s, "+")(0), " ", ""))
s2 = UCase(Replace(Split(s, "+")(1), " ", ""))
For Each cell In Range("A1:A59")
t = UCase(Replace(cell.Value, " ", ""))
t1 = Split(t, "+")(0)
t2 = Split(t, "+")(1)
If s1 = t1 And s2 = t2 Or s1 = t2 And s2 = t1 Then
MsgBox cell.Address
End If
Next
End Sub

quizá sea un poco rebuscado, pero ....

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda avanzada con macros

Publicado por frany (58 intervenciones) el 23/07/2009 20:47:53
Casi nunca he visto que respondan dos grandes maestros :-)
Que pasaria si en vez de dos sumandos fuesen mas? No nos valdria este procedimiento no Juan C?
Podria llegarse el caso que habria muchas combinaciones , ( lo problemas de combinatoria no los tengo demasiado frescos)
un saludo a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Busqueda avanzada con macros

Publicado por JuanC (1054 intervenciones) el 23/07/2009 21:22:52
en el caso de más sumandos habría que modificarlo o hacer otra cosa...
no sé si estás suponiendo solamente o lo necesitás...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda avanzada con macros

Publicado por frany (58 intervenciones) el 23/07/2009 21:26:04
Solo es una suposicion desde el punto de vista pedagogico :-)
siempre es bueno aprender jajaja.
Un saludo amigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Busqueda avanzada con macros

Publicado por JuanC (1054 intervenciones) el 23/07/2009 22:14:21
una forma más genérica de lo mismo podría ser algo así...

Sub test()
Dim s$, cell As Range
Dim t$, bflg As Boolean
Dim i%, sText$
sText = "b1 + a1" '//Valor buscado
sText = Replace("+" & UCase(sText), " ", "")
On Error Resume Next
For Each cell In Range("A1:A59")
t = "+" & UCase(Replace(cell.Value, " ", ""))
bflg = True
For i = 1 To 100
Err.Clear
s = "+" & Split(sText, "+")(i)
If Err.Number = 9 Then Exit For
If Not InStr(1, t, s) > 0 Then
bflg = False
Exit For
End If
Next
If bflg Then
MsgBox cell.Address
End If
Next
Set cell = Nothing
End Sub

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

corregido un detalle

Publicado por JuanC (1054 intervenciones) el 23/07/2009 22:21:23
Sub test()
Dim s$, cell As Range
Dim t$, bflg As Boolean
Dim i%, sText$
sText = "b1 + a1" '//Valor buscado
sText = "+" & Replace(UCase(sText), " ", "") + "+"
For Each cell In Range("A1:A59")
t = "+" & UCase(Replace(cell.Value, " ", "")) & "+"
bflg = True
For i = 1 To 100
s = "+" & Split(sText, "+")(i) & "+"
If s = "++" Then Exit For
If Not InStr(1, t, s) > 0 Then
bflg = False
Exit For
End If
Next
If bflg Then
MsgBox cell.Address
End If
Next
Set cell = Nothing
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:corregido un detalle

Publicado por frany (58 intervenciones) el 24/07/2009 19:33:52
Me lo apuntaré pues para cuando lo necesite.
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:copiar despues de la busqueda

Publicado por Frank (6 intervenciones) el 25/07/2009 02:42:49
Excelente estuvo buenisimo. Gracias!!!
Pero necesito que cuando encuentre la dirección, en vez de un message box me copie en otra celda los datos que se encuentren a la derecha del criterio buscado.
Aqui copio el link para mas claridad

http://www.uploadyourfiles.de/download.php?file=273busqueda avanzada.xls

Saludos y gracia nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:copiar despues de la busqueda

Publicado por JuanC (1054 intervenciones) el 25/07/2009 14:00:29
algo así...

Range("M11") = cell.Offset(, 1).Value

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:copiar despues de la busqueda

Publicado por Frank (6 intervenciones) el 25/07/2009 19:35:08
Excellente esa es la idea
Muchas gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar