Excel 2010:跟踪历史记录并绘制每周更新的图表

时间:2014-10-01 07:00:53

标签: excel excel-vba excel-formula excel-2010 vba

我尝试搜索但找不到任何与我的问题有关的内容。我是一个优秀的新手。

我在宿舍消费必需品,每周更新一次。这是表 -

Essentials  Day 1   Day 2   Day 3   Day 4   Day 5   Avg
Soap        10      9       8       -       2       7.25
Toothpaste  3       2       4       -       1       2.5
Bread       8       7       6       7       3       6.2
Butter      5       4       5       6       2       4.4

从这张表中我每周手动将平均值复制到一张单独的表格中。这个表看起来像 -

Essentials      Week 1      Week 2      Week 3      Week 4      Week 5      Week 6
Soap            7.25        7           7.75        8           6           2
Toothpaste      2.5         2           2.75        3           2           1
Bread           6.2         6           6.5         7           6           1
Butter          4.4         4           4.6         6           4           1

我每周绘制平均值的图表。

我的问题:这种活动似乎是一个常见问题,Excel必须拥有一些工具和技术来自动完成此过程。我希望在我更新第一个表后,之前的平均值会自动转到表2并且图表会更新。可能吗?我是否忽视了一些显而易见的事情,或者这样做的方法有点棘手?

如果有人能指出我正确的方向,那将是非常有帮助的。任何指向教程/视频的链接也会有所帮助。

2 个答案:

答案 0 :(得分:1)

转置您的数据,并为周数插入一列:

Week  Day  Soap  Toothpaste  Bread  Butter
  1    1    10        3        8       5
  1    2     9        2        7       4
  1    3     8        4        6       5
  1    4     0        0        7       6
  1    5     2        1        3       2
  2    1    12        2        6       3
  2    2     6        1        5       2
  2    3     4        1        5       3
  2    4     5        3        6       5
  2    5     5        0        8       1

将其转换为表格(选择范围,然后单击功能区中的“插入表格”)。

从此数据创建数据透视表(选择表格,然后单击功能区中的“插入数据透视表”)。数据透视表可以转到不同的工作表上。

将Soap,Toothpaste,Bread和Butter字段放入数据透视表的数据/值区域,并将每个字段从Sum更改为Average(右键单击每个字段并单击Value Field Settings)。然后将“列”区域中显示的“值”字段移动到数据透视表的“行”区域,并将“周”字段放入“列”区域。最后将数据透视表转换为表格视图。

数据透视表将如下所示:

                       Week
Values                    1     2
Average of Soap         5.8   6.4
Average of Toothpaste     2   1.4
Average of Bread        6.2     6
Average of Butter       4.4   2.8

每周添加数据后,请刷新数据透视表,并追加下周的平均值。

答案 1 :(得分:0)



Sub copyVals()

Dim weekNbr As Long

weekNbr = Sheets("Sheet1").Range("A1").Value

Sheets("Sheet1").Range("D2:D6").Copy
Sheets("Sheet1").Range("G2:G6").Offset(0, weekNbr - 1).PasteSpecial xlPasteValuesAndNumberFormats
Application.CutCopyMode = False


End Sub




除非您希望每周保留一个表,否则您可能需要一个简单的宏来进一步自动化该过程。如果每周覆盖第一个表,表2中的值也将被覆盖。我在这里编写了一个示例宏,可以帮助您入门。

首先,当您更新表1时,您应该有一个指示符单元格,显示该表所代表的周数。

然后您可以将其映射到按钮或只是手动运行。

希望这有帮助!