
Estoy usando Excel 2007. Tengo un archivo de Excel que tiene la celda A1 que muestra una fecha y la celda B1 que muestra un monto en la hoja 1. Necesito actualizar automáticamente la fecha en A1 y el monto B1 en una base de datos en la hoja 2. La base de datos en La hoja 2 está vinculada a las celdas A1 y B1 en la hoja 1 mediante Vlookup eligiendo la fecha en A1 como valor de búsqueda. El archivo Excel se utiliza a diario y el contenido de las celdas A1 y B1 cambiará a diario. La hoja 2 deberá registrar todas las fechas y el monto en las celdas A1 y B1 durante un año.
Mi problema:
1. ¿Cómo construyo mi base de datos para capturar la fecha anterior y la cantidad en A1 y B1 diariamente porque las fechas en A1 siguen cambiando a medida que se ingresan diariamente?
Por ejemplo :-
El 3/14/2015 (celda A1), la cifra es $3,333 en la celda B1. Por lo tanto la base de datos captura la fecha 14/3/2015 y $3,333 en la hoja 2 de la base de datos.
Al día siguiente, 15/3/2015, el contenido de la celda A1 ahora se cambia a 15/3/2015 y B1 muestra una cifra de $5,555.
Mi desafío es cómo mantengo las fechas y el valor en la hoja 2 de mi base de datos, ya que solo puedo obtener una fecha y un valor para el día actual.
Sinceramente no conozco VBA.
Respuesta1
Esto se hace un poco más complicado porque desea copiar en dos celdas. Normalmente, puede utilizar el Worksheet_Change
evento para detectar cada vez que cambia una celda. Sin embargo, desea esperar hasta que ambas celdas hayan cambiado. En lugar de imponer alguna regla en la que tienes que cambiarlas en el orden correcto y luego simplemente mirar la última celda, escribí esto para esperar a que la celda C1
cambie. Mi pensamiento fue que sus usuarios pueden editar A1
y B1
luego escribircualquier cosay el código se C1
activaría. Puede usar la Validación de datos para agregar un menú desplegable C1
que solo tenga una opción como "Ir". El siguiente código copiará los valores de A1
& B1
en la última fila de la hoja 2 cada vez que C1
se cambie el valor de y luego borrará ese valor de C1
.
Abra el editor VBA ( Alt+ F11es un método). Busque la hoja 1 en la ventana del Explorador de proyectos a la izquierda (ya debería estar allí con un menú de árbol que muestra todos los libros abiertos y las hojas de trabajo que contienen). Haga doble clic en la hoja para abrir su ventana de código. Copie y pegue el siguiente código: (Es posible que deba editar la línea Worksheets("Sheet2")
si "Hoja2" no es el nombre real de la segunda hoja de trabajo en la que desea copiar los datos).
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If Not Intersect(Target, Range("C1")) Is Nothing Then
With Worksheets("Sheet2")
r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & r).Value = Range("A1").Value
.Range("B" & r).Value = Range("B1").Value
End With
Application.EnableEvents = False
Range("C1").ClearContents
Application.EnableEvents = True
End If
End Sub
(Para los adictos a VBA: normalmente prefiero usar Cells
over Range
pero no es tan comprensible al instante, así que elegí Range
).
Respuesta2
Si no conoce y no puede aprender las herramientas para realizar el trabajo, su única alternativa es hacerlo manualmente.
Luego, escriba los pasos que tuvo que realizar manualmente; ese será su esquema sobre cómo automatizarlo.
Luego comience a buscar en Google cómo crear una macro VBA simple que automatizará los pasos que anotó.