我正在尝试在 excel 2010 中为我的部门创建一个尽可能自动化的仪表板。因此,我有一个表格,其中的数据将每月或每周在每个单元格中更新。现在我的问题是,当有人去将单元格的值更改为新月份的新值时,我不想丢失上个月的先前值。
是否有可能每次自动保存表格中单元格的值,同时保留所有旧值?更具体地说,我想将表格的整个历史记录(例如 12 个月的历史记录)的副本保存到不同的工作表中。到目前为止,我在 VBA 中使用了一段代码,该代码会保存每次发生更改的行,但它不会扩展,即,当另一行发生更改时,更改将显示在与之前历史记录完全相同的位置。此外,一旦我单击单元格,该函数就会立即触发。我希望该函数仅在单元格值发生变化时存储数据。有谁能帮我解决这个问题?
谢谢!!
答案1
如果您不知道您的表格是什么样子,或者它有多大和多复杂,那么有两个选择:
1. 预生成标签
如果更改总是按相同的时间间隔进行(即每月、每周等),为什么不创建一个工作簿,为每个更改间隔设置单独的选项卡?例如,如果您每月更新单元格,则每个月都有一个选项卡。
只需让每张表引用前一张表即可。因此,二月份表中的每个单元格将显示一月份表中的每个单元格中的内容,直到您更新单元格为止。然后三月份表将自动引用二月份的表,依此类推。这是一种简单的方法,只要您的团队有能力更新正确的选项卡,这种方法就会奏效。
2. 创建宏
另一个选择是创建一个宏,该宏将自动复制包含表格的工作表,将其命名为当前日期和时间,并将其移动到末尾。然后,您可以将宏链接到一个按钮,这样在对“主表”进行必要的更新后,他或她只需单击该按钮即可。这样的宏可能看起来像这样:
Sub SaveTable()
Dim CurrentDate As String, CurrentTime As String
CurrentDate = Format(Date, "MMM DD, YYYY")
CurrentTime = Format(Time, "HHMM")
Sheets("Table").Copy After:=Worksheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = CurrentDate & " " & CurrentTime
End Sub
只需将“Table”替换为您想要的主表名称即可。