VBA技术问询:如何获取SeriesCollection中的最后一个Y值?
在VBA中获取SeriesCollection的最后一个Y值
可以获取,你原代码的问题在于Points.Count没有指定所属的系列对象,导致VBA无法识别,另外还有更稳妥的方式直接从Values数组中获取最后一个元素。
问题分析
原代码里的Cht.SeriesCollection(i).Values(Points.Count)存在两个问题:
Points.Count没有明确指向当前遍历的系列,VBA无法解析这个对象;- 直接用Points的数量作为索引,虽然通常和Values的元素数量一致,但直接操作Values数组的边界更可靠。
修正后的代码
Sub Series_Values() Dim Cht As Chart Dim srs As Series Dim lastYValue As Variant For Each Cht In ActiveWorkbook.Charts ' 改用For Each遍历系列,代码更简洁易读 For Each srs In Cht.SeriesCollection Debug.Print srs.Name Debug.Print WorksheetFunction.Max(srs.Values) Debug.Print srs.Points.Count ' 获取最后一个Y值的正确写法:用UBound获取数组的最大索引 lastYValue = srs.Values(UBound(srs.Values)) Debug.Print lastYValue Next srs Next Cht End Sub
额外说明
- VBA中从图表系列获取的
Values是一个基于1的数组,UBound(srs.Values)会返回数组的最后一个元素索引,直接取值即可得到最后一个Y值; - 如果需要处理空系列的情况,可以添加判断避免报错:
If Not IsEmpty(srs.Values) Then lastYValue = srs.Values(UBound(srs.Values)) Debug.Print lastYValue Else Debug.Print "该系列无数据" End If
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

