答案 0 :(得分:3)
可以使用Javascript在Excel中执行此操作,这种语言对于数据可视化和数据处理非常有用。
我为你编写了一份工作代码:
https://www.funfun.io/1/#/edit/5a7da69316e6737a215e6f8f
我使用带有嵌入电子表格的在线编辑器来构建此示例,由于JSON文件(在设置下面),电子表格中的数据可以在javascript中使用:
{
"data": "=A1:C4"
}
对于这个例子,我需要创建假值来显示条形图,这样就不会有不同性能之间的长度差异。所以我计算了三个不同的百分比。
var falseArrayZendesk = [];
var falseArrayIndustry = [];
var falseValues =[];
var totalPerPerformance = [100, 60, 1500] // custom average so that the bars all does the same length
...
falseArrayZendesk.push((falseZendesk * 100) / totalPerPerformance[i - 1]);
falseArrayIndustry.push((falseIndustry * 100) / totalPerPerformance[i - 1]);
然后我将每个数组添加到图表中并更改标签,以便在每个条形的末尾显示的实际值如下:
/*
* enter false values in series to display a correct chart
*/
var series = [];
for(var i = legend.length - 1; i >= 0; i--) {
series.push({
name: legend[i],
type: 'column',
color: Highcharts.getOptions().colors[i+7],
data: falseValues[i]
});
}
...
plotOptions: {
series: {
dataLabels: {
enabled: true,
formatter: function() {
/*
* Format the the number at the end of the bars (put the real value).
* this.x is the false average value.
* this.series.name is the legend of both column.
*/
switch (this.x) {
case "Satisfaction Rating": {
if (this.series.name == "Zendesk")
return Zendesk[0] + '%';
if (this.series.name == "Industry Average")
return Industry[0] + '%';
return;
}
case "Average First Reply Time": {
if (this.series.name == "Zendesk")
return Zendesk[1] + " hrs";
if (this.series.name == "Industry Average")
return Industry[1] + " hrs";
return;
}
case "New Tickets": {
if (this.series.name == "Zendesk")
return Zendesk[2];
if (this.series.name == "Industry Average")
return Industry[2];
}
default:
return "undefined";
}
}
}
}
},
请参阅示例以获得更高精度,例如我用于此图表的功能。如果你发现这个丑陋(正如QHart所说"丑陋"是主观的)你可以根据需要改变任意数量的选项,有很多可用的功能见Highcharts' documentation。
构建图表后,您可以通过粘贴Funfun Add-in中的URL将其上传到Excel中。以下是我的示例:
希望这有帮助!
披露:我是funfun的开发者