在图表中添加辅助轴

时间:2017-07-30 10:12:46

标签: excel vba excel-vba

我正在根据数据透视表中提供的数据生成图表。

我想从数据透视表中生成一个柱形图。

数据透视表包含百分比值和绝对数字。我有D列和E列中的百分比值,以及B列和C列中的绝对数字。我想为我的图表设置一个带有百分比的辅助y轴。谁能告诉我如何处理这个问题?

我已经开始使用如下所示的代码。

// setup by `npm i gulp gulp-rollup rollup-plugin-babel babel-preset-es2016 babel-plugin-external-helpers --save-dev`

// gulpfile.js
var gulp       = require('gulp'),
    rollup     = require('gulp-rollup');

gulp.task('bundle', function() {
  gulp.src('./src/**/*.js')
    // transform the files here.
    .pipe(rollup({
      // any option supported by Rollup can be set here.
      "format": "iife",
      "plugins": [
        require("rollup-plugin-babel")({
          "presets": [["es2016", { "modules": false }]],
          "plugins": ["external-helpers"]
        })
      ],
      entry: './src/main.js'
    }))
    .pipe(gulp.dest('./dist'));
});

任何领导都会有所帮助

2 个答案:

答案 0 :(得分:2)

设置cht对象后添加此代码:

With cht
    .HasAxis(xlValue, xlSecondary) = True ' add the secondary axis
    .Axes(xlSecondary).TickLabels.NumberFormat = "0.0%" ' format it to percentage
End With

修改1 :对于将来的帖子,请使用此代码(它是您的代码),因为它不使用任何ActiveSheetSelectActiveChart或{{1 }}。

另外,请尝试始终使用Selection并提前定义所有变量和对象。

<强> 代码

Option Explicit

答案 1 :(得分:1)

d,e列ar的系列集合按AxisGroup = 2分组。

Sub charts()
Dim cht As Chart
Dim ptable As PivotTable
Dim ptr As Range
Dim Sh As ChartObject
'ThisWorkbook.Sheets("Status").ChartObjects.delete
If ActiveSheet.PivotTables.Count = 0 Then Exit Sub
Set ptable = ActiveSheet.PivotTables(1)
Set ptr = ptable.TableRange1
Set Sh = ActiveSheet.ChartObjects.Add(Left:=1, _
    Width:=390, _
    Top:=100, _
    Height:=250)

Set cht = Sh.Chart
With cht
.SetSourceData ptr
.ChartType = xlColumnClustered

End With
'cht.SeriesCollection(2).Axes(xlValues, xlSecondary).MaximumScale = 10
cht.SeriesCollection(1).HasDataLabels = True
cht.SeriesCollection(2).HasDataLabels = True
'cht.SeriesCollection(3).HasDataLabels = True

cht.SeriesCollection(3).AxisGroup = 2
cht.SeriesCollection(4).AxisGroup = 2
cht.SeriesCollection(3).ChartType = xlLine
cht.SeriesCollection(4).ChartType = xlLine

cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(0, 255, 0) '<~~ Red
cht.SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
cht.SeriesCollection(3).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
cht.SeriesCollection(4).Format.Line.ForeColor.RGB = RGB(110, 110, 255)

cht.HasTitle = True
cht.ChartTitle.Text = "Status"
cht.Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0%"
End Sub