VBA更新图表范围来自可变行

时间:2017-01-10 13:04:40

标签: excel vba excel-vba match excel-charts

我有一个程序,它应该从文件中读取值,生成图形并执行计算。

它导入两列/ 17000+行数据集,需要生成特定范围的图表。第一列包含位移数据,可以来回循环-5到5毫米。我需要分析每个循环中-2.5到-4.5和2.5到4.5mm的结果。

问题在于,对于不同的数据集,包含范围的极值的行的数量可以变化。

我正在使用MATCH函数来获取范围的开始和结束的行号。例如:

=MATCH(2.5,Data!B200:B230,1)+199
=MATCH(4.5,Data!B260:B290,1)+260

在我的情况下,它分别产生216272

我的问题是:如何在VBA代码中使用这些值来使用正确的数据集自动更新我的图形?目前该范围固定如下:

Sheets("Main").ChartObjects("Chart 12").Activate 'Cycle 1 - Evaluation(tension)
ActiveChart.SeriesCollection(1).XValues = "=Data!$B$216:$B$272"
ActiveChart.SeriesCollection(1).Values = "=Data!$C$216:$C$272"

感谢/问候

1 个答案:

答案 0 :(得分:1)

Dim两个变量,如ij,然后在字符串变量中使用它们来创建XValuesValues属性的值Series 1}}。例如:

Dim i As Long, j As Long
Dim ref1 As String, ref2 As String

i = 216 'update with your MATCH formula
j = 272 'update with your MATCH formula

' create the references as string variables
ref1 = "=Data!$B$" & i & ":$B$" & j
ref2 = "=Data!$C$" & i & ":$C$" & j

Sheets("Main").ChartObjects("Chart 12").Activate 'Cycle 1 - Evaluation(tension)
ActiveChart.SeriesCollection(1).XValues = ref1
ActiveChart.SeriesCollection(1).Values = ref2