Como llenar automaticamente celdas en una hoja dependiendo del valor de la celda de al lado usando Macros enn Excel.

Tengo una tabla de dos columnas en la Hoja2. Una columna producto y la otra descripcion. Esa tabla tiene 50 o 60 productos, con sus respectivas descripciones.

Necesito que al escribir el nombre del producto el la Columna C de la hoja1, La columna D se me llene automaticamente con el valor de la descripcion de ese producto. Permitiendo que al escribir aleatoriamente un producto u otro en la columna C (Hoja 1) automaticamente se rellenara la descripcion que corresponda.

1 Respuesta

Respuesta
1

H o l a:

Pon la siguiente macro en los eventos de la hoja1:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 100 Then Exit Sub
    If Not Intersect(Target, Columns("C")) Is Nothing Then
        For Each c In Target
            Set b = Sheets("Hoja2").Columns("A").Find(c.Value, lookat:=xlWhole)
            If Not b Is Nothing Then
                c.Offset(0, 1) = b.Offset(0, 1)
            Else
                MsgBox "No existe el producto: " & c.Value
            End If
        Next
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja1)
  4. Del lado derecho copia la macro

':)
':)

Dante Primero que todo gracias por responderme. Agregue un código para que me listara números en la celda anterior de manera que cuando agrego productos me salga la descripción y un numero de item automáticamente. Funciona pero creo que no esta muy limpio. ¿Cómo debería poner las celdas por números o por nombres?. Si hay una forma más limpia de hacer esto Por Favor oriéntame.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
If Target.Count > 100 Then Exit Sub
If Not Intersect(Target, Columns("C")) Is Nothing Then
For Each c In Target
Set b = Sheets("Work").Columns("O").Find(c.Value, lookat:=xlWhole)
If Not b Is Nothing Then
c.Offset(0, 2) = b.Offset(0, 2)
Else
MsgBox "No existe el producto: " & c.Value
End If
Next
End If
 'para listar automaticamente a medida que agrego productos. Columna3= "C"
If Target.Column = 3 And Target.Row > 9 Then
If Target.Row = 10 Then
Sheets("Print").Cells(Target.Row, 2).Value = 1

End If
If Target.Row > 10 Then
Sheets("Print").Cells(Target.Row, 2).Value = Sheets("Print").Cells(Target.Row - 1, 2).Value + 1

End If
End If
End Sub

H o l a:

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en todoexpertos, en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor", ahí me describes con detalle y con ejemplos lo que necesitas.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas