BuscarV con VBA sin botón y sin formulario

Necesito Urgente! Como hacer esto

Tengo en mi hoja 1 en el rango C6:C700 los valores independientes (nombres de empresas)

Y en la hoja 2 están los datos de las empresas en la matriz B2:C1000 y necesito que en la columna D de la Hoja 1 se ingresen según se ingresen los datos de la columna C(nombres de las empresas) sus respectivos RUT que están en la columna C de la hoja 2.

He visto ejemplos de que se puede hacer con un botón que recorra las hojas, pero necesito que se haga a medida que haya cambios en alguna de las celdas de la columna C de la hoja 1, sin necesidad de hacer nada más.

Please!.

Respuesta
1

Tal vez esto te pueda servir también:

Toma una de las macros que mas se adapten y solo debes ponerla en el evento change de la hoja algo así suponiendo que tu quieras que revise si cambia la celda B2 por ejemplo

It target.column = 2 and target.row=2 then 

tu macro aca

End if

En el ejemplo anterior revisa el cambio especifico en la celda b2 (columna b=2 y fila 2)

Si quieres que sea en cualquier fila de la columna B, empezando en la fila 2, debes usar

It target.column = 2 and target.row>=2 then 

https://www.youtube.com/watch?v=mkZXXDSwLEM&list=PLdK9H5dMIfQiJo6XaLrrtqGzoeGxffMkM

https://www.youtube.com/watch?v=hZkf3KRfxqg&list=PLdK9H5dMIfQiJo6XaLrrtqGzoeGxffMkM

https://www.youtube.com/watch?v=3FCkXGOIkiA&list=PLdK9H5dMIfQiJo6XaLrrtqGzoeGxffMkM

https://www.youtube.com/watch?v=9haiZN6wE6I&list=PLdK9H5dMIfQiJo6XaLrrtqGzoeGxffMkM

https://www.youtube.com/watch?v=Su_iPRz0QC8&list=PLdK9H5dMIfQiJo6XaLrrtqGzoeGxffMkM

https://www.youtube.com/watch?v=qoQpjucvp0I&list=PLdK9H5dMIfQgcGDBkN58AZieS8lWrFLTh

1 respuesta más de otro experto

Respuesta
3

Podrías dejar colocada una fórmula y arrastrarla a medida que se te va llenando la tabla de hoja1 (en la imagen se observa la sintaxis).

Sino, entra al Editor de macros, selecciona el objeto HOJA1 tal como se observa en la imagen y allí copia el sgte código:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'x cada cbio en col C a partir de fila 6, se agrega el rut en col D
If Target.Column = 3 And Target.Row > 5 Then
    'si se limpia el rango no se ejecuta
    If Target.Count > 1 Then Exit Sub
    'si se introdujo un valor
    If Target.Value <> "" Then
        Set busco = Sheets("Hoja2").Range("B:B").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
        'si lo encontró coloca el rut
        If Not busco Is Nothing Then
            Target.Offset(0, 1) = busco.Offset(0, 1)
        Else
            'opcional: dejar la celda vacía o colocar un texto
            Target.Offset(0, 1) = ""
            'Target.Offset(0, 1) = "sin rut"
        End If
    End If
End If
End Sub

Tené presente que estoy considerando que los DATOS inician donde mencionaste (títulos x encima).

En caso de que no se encuentre esa cuenta en Hoja2 tenés 2 opciones: dejar la celda vacía o enviar un mensaje. Solo dejá una de las 2 instrucciones siguientes:

Target.Offset(0, 1) = ""
Target.Offset(0, 1) = "sin rut"

Sdos y no olvides valorar la respuesta.

Elsa

PD) Te invito a mirar el video 29 de mi canal donde encontrarás otros métodos de búsqueda.

https://www.youtube.com/watch?v=FFYB1oIr2xE&t=3s&ab_channel=ElsaMatilde 

Olvidé la imagen ;)

Muchas gracias Matilde, pero por alguna razón no me funciona, no me da error, pero no hace nada.

Partiendo de que cuando entrego una macro SIEMPRE fue probada antes, debes revisar tu situación:

1- Que tengas habilitadas las macros

2- Que la hayas colocado en la hoja donde estaría lo que llamaste Hoja1.

3- Que los cambios los estás haciendo en la col que revisa la macro... guiate por la imagen.

Si aún así no hace nada tendrás que mostrarme TUS hojas y TU editor para ver dónde está el problema, o me envías el libro a algunos de mis correos que aparecen en sitio que dejo al pie.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas