首页 > 解决方案 > 在数据透视图中为单个图表值创建永久趋势线

问题描述

我正在尝试为数据透视图上的一个图表值创建一个永久趋势线。我为此编写了一个宏,但似乎我的 for 循环中的 if-else 语句被忽略了。

这是我在 Moduel1 中的代码:

Sub AddTrendLine()
Dim mySeriesCol As SeriesCollection

Set mySeriesCol = ActiveSheet.ChartObjects.Chart.SeriesCollection

For i = 1 To mySeriesCol.Count
    If mySeriesCol(i).Name <> "Actual" & mySeriesCol(i).Trendlines.Count > 0 Then
        mySeriesCol(i).Trendlines.Delete
    ElseIf mySeriesCol(i).Name = "Actual" & mySeriesCol(i).Trendlines.Count = 0 Then
        mySeriesCol(i).Trendlines.Add
End If
Next
End Sub

这是我在 Sheet2 中的代码:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call AddTrendLine
End Sub

这是我得到的:

这是我得到的

这是我想看到的:

这是我想看到的

任何建议将不胜感激。

标签: excelvbapivot-tablepivot-chart

解决方案


&强制字符串连接并且不是逻辑运算符;And是。

当前mySeriesCol(i).Trendlines.Count > 0被评估,结果(真/假)与文本“实际”连接。&

所以你当前的代码相当于

If mySeriesCol(i).Name <> "ActualFalse" '<~ or "ActualTrue" 

使用And.

编辑:

也有问题:Set mySeriesCol = ActiveSheet.ChartObjects.Chart.SeriesCollection

您想使用特定的ChartObject.

Sheet1.ChartObjects("your chart name").Chart.SeriesCollection

或者

Sheet1.ChartObjects(1).Chart.SeriesCollection

编辑2:

没有Trendlines.Delete方法;它是Trendline.Delete

mySeriesCol(i).Trendlines(1).Delete

推荐阅读