Fórmulas y valores registrados en Microsoft Excel

Que tal Fejoal, Tengo en la Celda D3 que meter un código, y en la celda D5 la sig. Fórmula: =SI(ESNOD(BUSCARV(D3, A10:F200, 2, FALSO)),"No existe en en Base", BUSCARV(D3, A10:F200, 2, FALSO)). ¿Es posible que en la Celda F5 le coloque un valor cualquiera, de manera que ese valor quede registrado en mi base de datos (dentro de la columna F), correspondiendo al código que señalé en la celda D3 y ésto ocurra cada vez que escriba un código en ésta celda?. De antemano gracias por tu interés y Saludos.

1 respuesta

Respuesta
1
Aparentemente es posible (¿cuándo no?), si es que logré entender correctamente qué es lo que determina que un dato pase a tu base y cuál es el dato que quieres pasar.
Usaremos, en todo caso, una macro basada en el evento Change (cambio) en la hoja donde están las celdas que mencionas.
Este procedimiento controlará que la celda D3 haya sufrido un cambio, pasará a la base el valor encontrado en la celda F5.
De todos modos, en la macro puedes modificar la dirección de la celda que será agregada a tu base.
Adicionalmente asumo que tal valor (de F5) se colocará en aquella columna F donde encuentre el código de la celda D3.
Si todas estas elucubraciones -a partir del texto de tu pregunta- fuesen ciertas, activa el editor de Visual Basic (presiona Alt+F11) y busca
la hoja donde quieres que esto ocurra (donde harás la carga de datos). Da doble click sobre ella. (Otra forma de llegar a este punto es hacer click derecho sobre la solapa de esta hoja y elegir la opción "Ver Código)
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'------- Variables
'Fer, ingresa aquí los rangos involucrados:
BuscarDato = "D3" 'Celda donde está el dato a buscar
LlevarDato = "F5" 'Celda con el dato a poner en la base
RangoBusq = "A10:A200" 'Rango donde buscar el dato
'------------------------ gracias...
If BuscarDato = Target.Address(False, False) Then
BuscarDato = Range(BuscarDato).Value
LlevarDato = Range(LlevarDato).Value
Set Encontrado = ActiveSheet.Range(RangoBusq).Find(BuscarDato, LookIn:=xlValues, LookAt:=xlWhole)
If Encontrado Is Nothing Then
MsgBox "No se encontró " & BuscarDato & Chr(10) & "en el rango " & RangoBusq
Else
Encontrado.Offset(0, 5).Value = LlevarDato
End If
Set Encontrado = Nothing
End If
End Sub
---
Al inicio del código, coloqué las variables. Podrás modificarlas en caso de que las direcciones no concuerden con las tuyas.
Cierra el Editor y graba el archivo.
A partir de entonces, cada vez que cambie el contenido de la celda D3 y el dato incluido en ella sea encontrado en el rango indicado, el contenido de la celda F5 será colocado en la columna F de esa base, en la fila donde se haya encontrado una coincidencia con el valor de D3. Ten presente que el cambio será instantáneo, sin preguntar.
En caso de que no lo encuentre, aparecerá un mensaje, avisándote.
Espero que esto sea lo que buscas. Sino, ya sabes qué hacer.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas