到目前为止,这段代码创建了 3 个图表。最后一张图表有两个系列。第二个系列从负数开始,所以我放在cht.Axes(xlValue).MinimumScale = 0
下面代码的末尾,以使 y 轴无论如何都从零开始。唯一的问题是它让我的图表看起来很混乱。有什么可以添加到现有代码中以使第二个系列跳过输入负数并从第一个 0 或正数开始?
Sub UpdateCharts()
Dim cObj As ChartObject
Dim cht As Chart
Dim shtName As String
Dim chtName As String
Dim xValRange As Range
Dim lastRow As Long
With ActiveSheet
lastRow = .Range("B" & .Rows.Count).End(xlUp).Row
Set xValRange = .Range("B2:B" & lastRow)
shtName = .Name & " "
End With
'## This sets values for Series 1 in each chart ##'
For Each cObj In ActiveSheet.ChartObjects
Set cht = cObj.Chart
chtName = shtName & cht.Name
If cht.SeriesCollection.Count = 0 Then
'## Add a dummy series which will be replaced in the code below ##'
With cht.SeriesCollection.NewSeries
.Values = "{1,2,3}"
.XValues = xValRange
End With
End If
'## Assuming only one series per chart, we just reset the Values & XValues per chart ##'
With cht.SeriesCollection(1)
'## Assign the category/XValues ##'
.Border.Color = RGB(0, 0, 255)
.XValues = xValRange
'## Here, we set the range to use for Values, based on the chart name: ##'
Select Case Replace(chtName, shtName, vbNullString)
Case "RPM"
.Values = xValRange.Offset(0, 3) '## Column E is 3 offset from the xValRange in column B
.Name = "RPM"
Case "Pressure/psi"
.Values = xValRange.Offset(0, 5) '## Column G is 5 offset from the xValRange in column B
.Name = "Pressure/psi"
Case "Burn Off"
.Values = xValRange.Offset(0, 6) '## Column H is 6 offset from the xValRange in column B
.Name = "Demand burn off"
'## Make sure this chart has 2 series, if not, add a dummy series ##'
If cht.SeriesCollection.Count < 2 Then
With cht.SeriesCollection.NewSeries
.XValues = "{1,2,3}"
End With
End If
'## add the data for second series: ##'
cht.SeriesCollection(2).XValues = xValRange
cht.SeriesCollection(2).Values = xValRange.Offset(0, 8) '## Column J is 8 offset from the xValRange in column B
cht.SeriesCollection(2).Name = "Step Burn Off"
cht.SeriesCollection(2).Border.Color = RGB(255, 0, 0)
Case "Add as many of these Cases as you need"
End Select
End With
cht.Axes(xlValue).MinimumScale = 0
Next
End Sub
这是图像: