2017-07-29 92 views
-1

我正在生成一個表中的圖表。在圖表中添加一條水平線

我想在圖表中有一條水平線。我將此稱爲設定值,數據在我的表格的E列中可用。

另外,我想改變m軸的比例。我想要使​​用百分比符號從0到10的軸值。

任何潛在客戶都將有所幫助。我已經用我的圖表試過了。

Sub chartRedResultPer() 
Dim Rng, rng1, rng2 As Range 
Dim cht1 As Object 
Set rng1 = ActiveSheet.Range("A2:A53") 
Set rng2 = ActiveSheet.Range("D2:D53") 
Set Rng = Union(rng1, rng2) 
Set Sh = ActiveSheet.ChartObjects.Add(Left:=320, _ 
    Width:=600, _ 
    Top:=70, _ 
    Height:=250) 
Sh.Select 
Set cht1 = ActiveChart 
With cht1 
.SetSourceData Source:=Rng 
.ChartType = xlColumnClustered 
cht1.Axes(xlSecondary).TickLabels.NumberFormat = "0%" 
cht1.SeriesCollection(1).delete 
End With 
cht1.SeriesCollection(1).Name = "Red " 
cht1.SeriesCollection(1).HasDataLabels = True 
cht1.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0) 
cht1.HasTitle = True 
cht1.ChartTitle.Text = "Result 2017" 
End Sub 
+0

你會發現任何Excel圖表問題的最佳解釋是訪問[Jon Peltier的網站](https://peltiertech.com/Excel/Charts/)。 [這是答案](https://peltiertech.com/Excel/Charts/AddLineHorzSeries.html)你正在尋找。 – PeterT

+0

@PeterT我沒有找到任何代碼來幫助em – Jenny

回答

2

添加其他範圍

Dim rng3 as Range 
Set rng3 = ActiveSheet.Range("E2:E53") 

With cht1.SeriesCollection.NewSeries 
    .Name = "SetPoint" 
    .Values = rng3 
    .Type = xlLine 
    .MarkerStyle = None 
    .Format.Line.ForeColor.RGB = RGB(0, 0, 0) 
End With 

With cht1.Axes(xlValue) 
     .MaximumScale = 10 
     .MinimumScale = 0 
End With 
+0

H代碼是有用的,謝謝,你能告訴我如何可以用比例0-10的百分比格式化y /軸嗎? – Jenny

+0

編輯答案 –

+0

我使用0.0%數字格式以百分比形式顯示它們。但是這然後改變我的價值10在我的軸到1000%。有沒有辦法,我可以將%添加到我的軸 – Jenny

1

的代碼會是這樣。

Sub ColumnChart() 

    Dim i As Integer, j As Integer, n As Integer 
    Dim rng1 As Range, rng2 As Range, rng3 As Range 
    Dim cht1 As Chart, Sh As ChartObject 

    Set rng1 = ActiveSheet.Range("A2:A53") 
    Set rng2 = ActiveSheet.Range("D2:D53") 
    Set rng3 = ActiveSheet.Range("e2:e53") 

    Set Sh = ActiveSheet.ChartObjects.Add(Left:=320, _ 
     Width:=600, _ 
     Top:=70, _ 
     Height:=250) 

    Set cht1 = Sh.Chart 

    With cht1 
     n = .SeriesCollection.Count 
     If n > 0 Then 
      For j = n To 1 Step -1 
       .SeriesCollection(j).Delete 
      Next j 
     End If 
     .HasTitle = True 
     .ChartType = xlColumnClustered 
     .Legend.Position = xlLegendPositionRight 
     With .ChartTitle 
      .Characters.Text = "Result 2017" 
      .Characters.Font.Size = 12 
     End With 

      i = i + 1 
      .SeriesCollection.NewSeries 
      With .SeriesCollection(i) 
       .Name = "Red " 
       .XValues = rng1 
       .Values = rng2 
       .Format.Fill.ForeColor.RGB = RGB(255, 0, 0) 
       .ApplyDataLabels 
      End With 
      With .SeriesCollection(i).DataLabels 
       .ShowValue = True 

       .Font.Size = 7 
      End With 

      i = i + 1 
      .SeriesCollection.NewSeries 
      With .SeriesCollection(i) 
       .Name = "Pecent " 
       .XValues = rng1 
       .Values = rng3 
       .AxisGroup = 2 
       .ChartType = xlLine 
       .Format.Line.ForeColor.RGB = RGB(0, 255, 0) 
      End With 


      .Axes(xlValue, xlPrimary).HasTitle = True 
      .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Red " 
      .Axes(xlValue, xlPrimary).TickLabels.NumberFormat = "#,###" 
      .Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0%" 
      .Axes(xlCategory, xlPrimary).HasTitle = True 
      .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x Axes" 

    End With 


End Sub