我正在使用 Excel 2007。我有一个 Excel 文件,其中单元格 A1 显示日期,单元格 B1 显示工作表 1 中的金额。我需要自动更新工作表 2 中数据库中的 A1 中的日期和 B1 中的金额。通过使用 Vlookup 选择 A1 中的日期作为查找值,工作表 2 中的数据库链接到工作表 1 中的单元格 A1 和 B1。excel 文件每天都在使用,单元格 A1 和 B1 的内容每天都会变化。工作表 2 需要记录单元格 A1 和 B1 中一年的所有日期和金额
我的问题:
1.我如何建立数据库来每天捕获 A1 和 B1 中的前一个日期和金额,因为 A1 中的日期不断变化,因为它是每天输入的。
例如 :-
2015 年 3 月 14 日(单元格 A1)单元格 B1 中的数字为 3,333 美元。因此,数据库在数据库的第 2 张表中捕获日期 2015 年 3 月 14 日和 3,333 美元。
第二天,即 2015 年 3 月 15 日,单元格 A1 的内容现在更改为 2015 年 3 月 15 日,单元格 B1 显示的数字为 5,555 美元
我的挑战是如何在数据库中保存表 2 中的日期和值,因为我只能获取当天的一个日期和值。
老实说,我不知道 VBA。
答案1
由于您想要复制两个单元格,因此这只会稍微有点棘手。通常,您可以使用事件Worksheet_Change
来捕获单元格的更改。但是,您希望等到两个单元格都更改。我编写此代码是为了等待单元格更改,而不是强制执行某些规则,即您必须按正确的顺序更改它们,然后只观察最后一个单元格C1
。我的想法是,您的用户可以编辑A1
然后B1
输入任何事物中C1
,代码就会触发。您可以使用数据验证来添加一个下拉列表,C1
该下拉列表只有一个选项,例如“Go”。下面的代码会在值更改时将A1
&的值复制到工作表 2 的最后一行,然后从 中清除该值。B1
C1
C1
打开 VBA 编辑器(Alt+F11是一种方法)。在左侧的 Project Explorer 窗口中查找 Sheet 1(它应该已经在那里,并且有一个树形菜单,显示所有打开的工作簿及其中的工作表)。双击工作表以打开其代码窗口。复制并粘贴以下代码:(Worksheets("Sheet2")
如果“Sheet2”不是您要将数据复制到的第二个工作表的实际名称,则可能需要编辑行。)
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
(对于 VBA 迷来说:我通常Cells
更喜欢使用Range
但它不是那么容易理解,所以我选择了Range
。)
答案2
如果您不了解并且无法学习完成这项工作的工具,那么您唯一的选择就是手动完成。
然后写下您必须手动执行的步骤 - 这将是您如何实现自动化的大纲。
然后开始谷歌搜索如何创建一个简单的 VBA 宏来自动执行您写下的步骤。