我正在根据数据透视表中提供的数据生成图表。
我想从数据透视表中生成一个柱形图。
数据透视表包含百分比值和绝对数字。我有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'));
});
任何领导都会有所帮助
答案 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 :对于将来的帖子,请使用此代码(它是您的代码),因为它不使用任何ActiveSheet
,Select
,ActiveChart
或{{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