截至目前,这段代码创建了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
这是图片:
答案 0 :(得分:0)
如果我理解你的问题,一个非常简单的方法是选择具有负值的系列的条形或标记。
在图表中选择您的系列 - &gt;左键单击 - >格式系列,然后在第二个选项中选择“显示标记”,然后在线条颜色选项(第4个向下)中将线条设置为不可见。
以下是一个示例:
在Vba中,要玩的属性就像:
ChartObjects("Graphique 1").MarkerStyle = -4109
With Selection code
.MarkerStyle = 3
.MarkerSize = 10
End With