首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel-VBA图表系列名称没有显示在X轴上

Excel-VBA图表系列名称没有显示在X轴上
EN

Stack Overflow用户
提问于 2019-04-18 10:10:28
回答 1查看 1.6K关注 0票数 1

我一直在宏上使用VBA制作excel图表,我已经完成了我所需要的所有需求,但它给了我最困难的时刻。

我的问题是,当我想要在X轴上添加系列(条形码)的图表时,这样更容易阅读,因为我不能用宏复制,所以我能够设置系列名称,并在图例上得到它们,但我无法将它们放在轴上。

好的,所以我试着设置系列名称如下:

代码语言:javascript
运行
复制
ActiveChart.SeriesCollection(k).Name = Range("O180").Value & " " & Range("F86").Value & vbNewLine & "Óptimo: 10-12"

我也尝试过设置和XValues,但它只接受数组,虽然我已经创建了一个条目数组,但它没有实现我想要的。

在添加所有尝试的系列之前和之后,我还做了一些格式化:

代码语言:javascript
运行
复制
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis)

后加

所以,这就是我如何添加系列,我添加了所有的,在这开始后,另一个If Application.IsNA添加另一个意甲.

代码语言:javascript
运行
复制
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上的名字在酒吧下面,所以每个酒吧都有自己的名字

我希望这张图片是可以理解的,请不要在意图中的所有问题,只对我遇到麻烦的那个.

EN

回答 1

Stack Overflow用户

发布于 2019-04-19 13:20:43

小细节。我想你可以在x轴下找到标签(希望如此?)通过这样做:

  • 右击图表
  • 单击Select Data
  • 单击Change Row/Column
  • 单击OK

但是现在您不再有四个系列(每个都有一个值),而是一个由四个值组成的系列。这可能会对您的格式产生影响,因为所有的条形现在都可能是相同的颜色(因为默认颜色是每个系列,而不是一个系列中的每个值) --而且您的图表的图例(如果有一个)现在可能只显示一个条目。

当您在代码中创建/使用现有系列时,您分配:ValuesName --但您从不分配x-值(在条形图的上下文中,x-轴下显示为类别名称)。

Excel正在为您创建x值标签(因为您没有分配任何),默认情况下,x值标签是与系列长度相匹配的数字列表(1, 2, 3, ...)。因为所有图表的系列只有一个值,所以在x轴下面只有一个1标签。

在我看来,一种更容易的方法是将这样的数据存储在一些工作表中(我只是编了一些数据):

然后您可以使用如下代码:

代码语言:javascript
运行
复制
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 ),而且您应该绘制一个由所有值组成的系列。

这是我的观点,但也许有人能以不同的方式告诉你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55743816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档