Asignar valor a una celda, cuando se modifica el valor de otra celda. (Excel 2007)

Hola a tod@s:

Mi duda es la siguiente.

En la celda A3 de mi hoja de cálculo, el usuario debe introducir un nombre de empleado (lo escoge de una lista de diez nombres)

En la celda A4 el usuario debe introducir un valor numérico desde una lista (del 1 al 10)

En la celda A10 aparece el nombre del 1er empleado y en la B10 un valor numérico

En la celda A11 aparece el nombre del 2º empleado y en la celda B11 un valor numérico

y así sucesivamente hasta llegar al 10º empleado.

Lo que deseo es que cuando el usuario seleccione un empleado de la lista y escoja un valor, automáticamente (o también me valdría pulsando un botón que lanzara una macro), se sume ese valor al número preexistente para ese empleado

Un caso concreto:

En la celda A12 aparece Pepe Pérez y en la celda B12 el número 25

Si selecciono de la lista que hay en A3 el empleado Pepe Pérez y selecciono de la lista que hay en A4 el valor 5, deseo que Excel me muestre en la celda B12 el contenido 30.

¿Alguien puede ayudarme?

Saludos y gracias de antemano.

1 respuesta

1
Respuesta de

¡Hola LauraVaquero!

Introduce esta macro en la hoja donde se ejecute

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$4" Then
For i = 10 To 19
If LCase(Cells(i, 1)) = LCase([A4]) Then
Cells(i, 2) = Cells(i, 2) + [B4]
Exit For
End If
Next
End If
End Sub

o Introduce esta otra, las dos hacen lo mismo

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rango As Range
If Target.Address = "$B$4" Then
Set rango = Range("A10:A19").Find([A4])
If Not rango Is Nothing Then
rango.Offset(0, 1) = rango.Offset(0, 1) + [B4]
End If
End If
End Sub

Tienes que introducir primero el nombre y después el número, porque es al cambiar este valor cuando se ejecuta la macro. Si quieres introducir dos veces el mismo valor, ya sea para un empleado o para dos tienes que volver a escribír el número, porque solo cuando se ha tecleado y pulsado enter se ejecuta la subrutina.

Si no te gusta ese funcionamiento automático puedes no hacer lo anterior y hacerlo poniendo un botón como decías y asignarle esta macro

Private Sub CommandButton1_Click()
Dim rango As Range
Set rango = Range("A10:A19").Find([A4])
If Not rango Is Nothing Then
rango.Offset(0, 1) = rango.Offset(0, 1) + [B4]
End If
End Sub

Y eso es todo, espero que te sirva y lo hayas entendido. Si ya está bien no olvides puntuar para poder hacer más preguntas en el futuro.

Un saludo.

Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje