Visual Basic - Macro para buscar una serie de palabras en un rango determinado

Life is soft - evento anual de software empresarial
   
Vista:

Macro para buscar una serie de palabras en un rango determinado

Publicado por Martin (3 intervenciones) el 10/07/2017 19:34:36
Buenas, hace tiempo estoy intentando conseguir una macro que me permita buscar un conjunto de palabras en un rango especifico, encontre algunos post interesantes, pero no solucionan mi necesidad.
Lo que necesito es buscar el contenido de las celdas C10005 a C10030 en el rango C6 a C10001, y que cuando encuentre la similitud me copie la serie de palabras completas y a demas me copie el contenido de las columnas A y B de la fila en la cual encontro la similitud y coloque esos datos en el rango A10005 a A10030 y B10005 a B10030.
Tengo la siguiente macro y no puedo hacer que funcione bien:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub BuscarDevoluciones()
Dim Producto As String, dato As Integer
 
Producto = Range("c10005,c10030")
 
Set valorbuscado = Range("c:c").Find(Producto)
    If valorbuscado Is Nothing Then
        MsgBox "Intente de nuevo, no se encontro ese producto"
    Else
        dato = valorbuscado.Row
        Cells(10005, 3) = valorbuscado
        Cells(10005, 2) = Cells(dato, 2)
        Cells(10005, 1) = Cells(dato, 1)
 
    End If
End Sub

Yo necesitaria que la busquda se realice en la fila 10005 a 10030 de la columna C, pero esta macro solo busca en la fila 10005. Desde ya muchas gracias!
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
Imágen de perfil de Antoni Masana

Macro para buscar una serie de palabras en un rango determinado

Publicado por Antoni Masana (307 intervenciones) el 11/07/2017 07:02:03
Puedes subir el libro para poder entender un poco mejor el problema.

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

Macro para buscar una serie de palabras en un rango determinado

Publicado por Martin (3 intervenciones) el 11/07/2017 15:04:29
Muchas gracias por el interes Antoni. Ahi adjunto el libro. En las hojas con nombre 1, 2, 3,..., es donde quiero realizar dicha busqueda. Se trata de buscar un producto que se encuentra en el listado que va desde la fila 6 a la 10001. Estuve intentando algo para lograr que si relleno la celda C10005 por ejemplo, busque considerando como vector de comparacion las celdas que van de C6 :C10001, si completo la celda B10005, busque considerando como vector comparacion las celdas B6:B10001, y si completo la celda A10005 considere de A6:A10001. Y ademas que complete con el dato completo si es que solo se ingresa una parte del dato a buscar en el vector comparacion.
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 Antoni Masana

Macro para buscar una serie de palabras en un rango determinado

Publicado por Antoni Masana (307 intervenciones) el 13/07/2017 08:54:08
Te pongo la macro modificada

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub BuscarDevoluciones()
    Dim Producto As String, a As Integer
 
    For a = 10005 To 10030
        Producto = Range("C" & a)
        Producto = Cells(a, 3)
 
        If Len(Producto) > 0 Then
            Set valorbuscado = Range("c6:c10001").Find(Producto)
            If valorbuscado Is Nothing Then
                MsgBox "Intente de nuevo, no se encontro ese producto" & _
                       vbCrLf & _
                       vbCrLf & Producto
            Else
                Cells(a, 2) = Cells(valorbuscado.Row, 2)
                Cells(a, 1) = Cells(valorbuscado.Row, 1)
            End If
        End If
    Next
End Sub

Las líneas 5 y 6 hacen lo mismo pon la que te haga mas rabia, quito la variable datos.
Defino el área de búsqueda para que no se encuentre a si mismo.
En el aviso incluyo el código que no encuentra.

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
Imágen de perfil de Antoni Masana

Macro para buscar una serie de palabras en un rango determinado

Publicado por Antoni Masana (307 intervenciones) el 13/07/2017 09:50:21
No había leído todo el texto de tu segundo post y me he quedado a medias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub BuscarDevoluciones()
    Dim Producto As String, a As Integer, Col As Integer, _
        Letra As String
 
    Const Texto = "Intente de nuevo, no se encontro el pruducto (Columna: "
 
    For Col = 1 To 3
        Letra = Mid$("ABC", Col, 1)
 
        For a = 10005 To 10030
            Producto = Range(Letra & a)
            Producto = Cells(a, Col)
 
            If Len(Producto) > 0 Then
                Set valorbuscado = Range(Letra + "6:" + Letra + "10001").Find(Producto)
                If valorbuscado Is Nothing Then
                    MsgBox Texto + Letra + "):" & vbCrLf & _
                                                  vbCrLf & Producto
                Else
                    Cells(a, 1) = Cells(valorbuscado.Row, 1)
                    Cells(a, 2) = Cells(valorbuscado.Row, 2)
                    Cells(a, 3) = Cells(valorbuscado.Row, 3)
                End If
            End If
        Next
    Next
End Sub

Esta MACRO te complets los datos de las tres columna independientemente si el único dato esta en la columna A, B o C.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Macro para buscar una serie de palabras en un rango determinado

Publicado por Martin (3 intervenciones) el 13/07/2017 12:53:23
Perfecto Antoni, ahora la pruebo. Muchisimas gracias!!! 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
Revisar política de publicidad