我一直在宏上使用VBA制作excel图表,我已经完成了我所需要的所有需求,但它给了我最困难的时刻。
我的问题是,当我想要在X轴上添加系列(条形码)的图表时,这样更容易阅读,因为我不能用宏复制,所以我能够设置系列名称,并在图例上得到它们,但我无法将它们放在轴上。
好的,所以我试着设置系列名称如下:
ActiveChart.SeriesCollection(k).Name = Range("O180").Value & " " & Range("F86").Value & vbNewLine & "Óptimo: 10-12"我也尝试过设置和XValues,但它只接受数组,虽然我已经创建了一个条目数组,但它没有实现我想要的。
在添加所有尝试的系列之前和之后,我还做了一些格式化:
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis)后加
所以,这就是我如何添加系列,我添加了所有的,在这开始后,另一个If Application.IsNA添加另一个意甲.
If (Not Application.IsNA(Range("P163").Value)) Then
If (Not Len(Range("P163")) <= 0) Then
z = z + 1
If (ActiveChart.SeriesCollection.Count < z) Then
ActiveChart.SeriesCollection.NewSeries
End If
ActiveChart.SeriesCollection(z).Values = Range("W163").Value
ActiveChart.SeriesCollection(z).Name = Range("O163").Value & " " & Range("F49").Value & vbNewLine & "Óptimo: 6,5-7,0 (Acidez Activa)"
ActiveChart.SeriesCollection(z).Format.Fill.OneColorGradient msoGradientHorizontal, 1, 1
ActiveChart.SeriesCollection(z).Format.Fill.GradientStops(1).Position = 0.25
ActiveChart.SeriesCollection(z).Format.Fill.GradientStops(2).Position = 1
'ActiveChart.SeriesCollection(z).Points(1).AxisGroup = z COMENTED LINE
ActiveChart.SeriesCollection(z).Points(1).ApplyDataLabels
ActiveChart.SeriesCollection(z) _
.DataLabels.ShowSeriesName = True
lastInput(1) = Range("O163").Value 'Name
lastInput(2) = Range("F49").Value 'Unformated Value for Legend
lastInput(3) = Range("W163").Value 'Formated value for chart
lastInput(4) = "Óptimo: 6,5-7,0 (Acidez Activa)" 'Complementary Optimal Legend Entry
End If
End If我想要XAxis上的名字在酒吧下面,所以每个酒吧都有自己的名字
我希望这张图片是可以理解的,请不要在意图中的所有问题,只对我遇到麻烦的那个.

发布于 2019-04-19 13:20:43
小细节。我想你可以在x轴下找到标签(希望如此?)通过这样做:
Select DataChange Row/ColumnOK但是现在您不再有四个系列(每个都有一个值),而是一个由四个值组成的系列。这可能会对您的格式产生影响,因为所有的条形现在都可能是相同的颜色(因为默认颜色是每个系列,而不是一个系列中的每个值) --而且您的图表的图例(如果有一个)现在可能只显示一个条目。
当您在代码中创建/使用现有系列时,您分配:Values、Name --但您从不分配x-值(在条形图的上下文中,x-轴下显示为类别名称)。
Excel正在为您创建x值标签(因为您没有分配任何),默认情况下,x值标签是与系列长度相匹配的数字列表(1, 2, 3, ...)。因为所有图表的系列只有一个值,所以在x轴下面只有一个1标签。
在我看来,一种更容易的方法是将这样的数据存储在一些工作表中(我只是编了一些数据):

然后您可以使用如下代码:
Option Explicit
Private Sub PlotChart()
Dim someSheet As Worksheet
Set someSheet = ThisWorkbook.Worksheets("Sheet1") ' Name of sheet containing data in my case.
Dim someChart As Chart
Set someChart = someSheet.ChartObjects(1).Chart
Dim someSeries As Series
Set someSeries = someChart.SeriesCollection.NewSeries
With someSeries
.Values = someSheet.Range("B3:B6")
.XValues = someSheet.Range("A3:A6")
End With
someChart.ChartTitle.Text = "Balanco Acido-Base"
End Sub它应该给你这样的东西:

您可以(通过VBA)更改格式(填充、颜色等)。每个Point在你的Series -如果你需要的酒吧是不同的颜色。
我认为,如果您想继续使用当前的方法(为每个条形图绘制一个1值长的系列),那么您就不可能在x轴下包括类别名称(即使您为每个系列指定了正确的Series.XValues ),而且您应该绘制一个由所有值组成的系列。
这是我的观点,但也许有人能以不同的方式告诉你。
https://stackoverflow.com/questions/55743816
复制相似问题