Excel 在透视图中为单个图表值创建永久趋势线
我试图为透视图上的一个图表值创建一条永久趋势线。我已经为此编写了一个宏,但似乎忽略了for循环中的if-else语句 以下是我在Moduel1中的代码:Excel 在透视图中为单个图表值创建永久趋势线,excel,vba,pivot-table,pivot-chart,Excel,Vba,Pivot Table,Pivot Chart,我试图为透视图上的一个图表值创建一条永久趋势线。我已经为此编写了一个宏,但似乎忽略了for循环中的if-else语句 以下是我在Moduel1中的代码: Sub AddTrendLine() Dim mySeriesCol As SeriesCollection Set mySeriesCol = ActiveSheet.ChartObjects.Chart.SeriesCollection For i = 1 To mySeriesCol.Count If mySeriesCol(
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
以下是我得到的:
以下是我想看到的:
任何建议都将不胜感激。强制字符串连接,而不是逻辑运算符;是
当前,mySeriesColi.Trendlines.Count>0被计算,结果True/False与&连接到文本Actual
因此,您当前的代码相当于
If mySeriesCol(i).Name <> "ActualFalse" '<~ or "ActualTrue"
或
编辑2:
没有趋势线。删除方法;它是:
我能弄明白。以下是我的最终解决方案: 模块:
Sub AddTrendLine()
Dim mySeriesCol As SeriesCollection
Set mySeriesCol = Sheet2.ChartObjects(1).Chart.SeriesCollection
For i = 1 To mySeriesCol.Count
If mySeriesCol(i).Name <> "Actual" And mySeriesCol(i).Trendlines.Count > 0 Then
mySeriesCol(i).Trendlines(1).Delete
ElseIf mySeriesCol(i).Name = "Actual" And mySeriesCol(i).Trendlines.Count = 0 Then
mySeriesCol(i).Trendlines.Add
ElseIf mySeriesCol(i).Name = "Actual" And mySeriesCol(i).Trendlines.Count > 1 Then
mySeriesCol(i).Trendlines(1).Delete
End If
Next
End Sub
并且是逻辑运算符,不是&。谢谢,现在我得到另一个错误,显示运行时错误“438”:对象不支持Set mySeriesCol=ActiveSheet.ChartObjects.Chart.SeriesCollection的此属性或方法。这是什么意思?我提前道歉,我是VBA新手。我想那会出错。您希望使用特定的ChartObject,而不是ChartObjects集合:ActiveSheet.ChartObjectsyourChartName…我将我的pivot图表计划命名为vs Actual,但它一直说找不到具有特定名称的项。下面是我的代码:设置mySeriesCol=ActiveSheet.ChartObjectsPlan与Actual.Chart.SeriesCollection。我注意到Model1的两个孩子是mySeriesCol,Chart1和I。我尝试将其更改为设置mySeriesCol=ActiveSheet.ChartObjectsPlan与Actual.Chart1.SeriesCollection,但仍然出现相同的错误。会发生什么?是否在即时窗口中返回ActiveSheet.chartObjects1.Name?你也可以索引到ChartObjects集合中。是吗?活动Sheet.ChartObjects1.Name旁边有一个断点,表示如果没有合适的对象,方法无效。
Sheet1.ChartObjects("your chart name").Chart.SeriesCollection
Sheet1.ChartObjects(1).Chart.SeriesCollection
mySeriesCol(i).Trendlines(1).Delete
Sub AddTrendLine()
Dim mySeriesCol As SeriesCollection
Set mySeriesCol = Sheet2.ChartObjects(1).Chart.SeriesCollection
For i = 1 To mySeriesCol.Count
If mySeriesCol(i).Name <> "Actual" And mySeriesCol(i).Trendlines.Count > 0 Then
mySeriesCol(i).Trendlines(1).Delete
ElseIf mySeriesCol(i).Name = "Actual" And mySeriesCol(i).Trendlines.Count = 0 Then
mySeriesCol(i).Trendlines.Add
ElseIf mySeriesCol(i).Name = "Actual" And mySeriesCol(i).Trendlines.Count > 1 Then
mySeriesCol(i).Trendlines(1).Delete
End If
Next
End Sub
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call AddTrendLine
End Sub