在我的 Excel 工作簿(即文件)中,我有七张温度表(周一、周二……周日)。这些数据以固定频率记录一整天。
现在我想创建一个工具来轻松查看这个时间序列数据。
我的想法是,我创建一个页面,比如 Index,其中包含所有这些工作表的名称列表,有一个图表对象,默认情况下显示来自工作表 Mon 的数据,还有一个按钮/或下拉列表,用于将 Mon 更改为任何名称(连接到工作表),并刷新图表以显示相应的数据。
我该如何处理这个问题?我只是一个非常基础的 Excel 用户,但我愿意学习这项技能。
答案1
由于您没有向我们提供有关工作表如何布局的详细信息,我假设您在每个日常工作表上的单元格中都有时间A2:A25
,单元格中有温度,如下所示:B2:B25
在索引表上,输入
- 在 中
A1
,“天”。 (这只是一个标签;与您在图像中显示的所需结果相同)。 - 在 中
B1
,您可以下拉列出一周中各天的列表。 - 在 中
J1
,“时间”。 (这只是一个标签,是可选的。) - 在 中
K1
,“Temp”。 (这只是一个标签,是可选的。) - 在 中
L1
。=B1 & " Temp"
这将是图表标题。 - 在 中
J2:J25
,时间从 00:00 到 23:00。或者,如果某些工作表具有不同的“X”轴值(例如,如果某些天有 00:30 到 23:30),请输入=IF(INDIRECT($B$1&"!A"&ROW())<>"", INDIRECT($B$1&"!A"&ROW()), "")
J2
拖动/填充到J25
(假设您始终有 24 个数据点)。您可能需要手动正确格式化(例如 )。这将访问时间数据(即hh:mm
X轴标签)来自A
索引日表的列,强制将空单元格视为空白而不是零(参见在 Excel 中引用空白单元格时显示空白)。
K2
,
=IF(INDIRECT($B$1&"!B"&ROW())<>"", INDIRECT($B$1&"!B"&ROW()), #N/A)
。这将从 B
每日工作表之一的 列访问温度数据,用#N/A
(“不可用”伪值)替换空单元格,这将导致相应的数据点不包含在图表中。选择K2
并向下拖动/填充到K25
。所选日期的温度数据将显示。现在根据 Index 表创建图表J1:K25
。单击图表标题,然后=Index!L1
在公式栏中键入。然后只需选择您想要的日期Index!B1
,当天数据的图表就会自动立即出现 — 无需按下按钮。
缺少数据的样本结果:
当然,单元格的选择是任意的。我使用了列 J
, L
这样我就可以将它们与图表一起放在页面上。如果您愿意不是查看所选数据,使用列 AA
, AC
使它们不被看到 - 和/或隐藏辅助列。
答案2
这是一个 vba 宏,用于更新图表数据。没有错误检查,并且大多数名称都是为了更好地理解
Private Sub SetChart(sheetChrt as worksheet, sheetData as worksheet)
With sheetChrt.ChartObjects(1).Chart.SeriesCollection(1)
.XValues = sheetData.Range("A1:A10") '
.Values = sheetData.Range("B1:B10")
End With
End Sub
Public Sub Test1()
with Thisworkbook
SetChart .Sheets("MyChartSheet"), .Sheets("MyDataSheet")
end with
End Sub