答案1
我认为您无法在原生 Excel 中做到这一点,但如果您愿意使用插件,这是可能的。Funfun 插件允许您在 Excel 中使用 Javascript 创建这种图表。
这是我为您编写的工作代码:
https://www.funfun.io/1/#/edit/5a69ddc9ee0b8c3283c653e0
我使用了您想要的格式,我只是改变了数据来创建两个不同的矩形,两个矩形都只有两个坐标。
正如您在此链接中看到的,我使用了 Funfun 的在线编辑器,并在嵌入的电子表格中输入了您的表格。
我使用 JSON 文件将电子表格中的数据传送到我的 javascript 代码中,如下所示:
{
"data": "=A1:E3"
}
然后,我将数据存储在局部变量中,并使用正确的坐标创建矩形,如下所示:
/* we store the data from the spreadsheet in local variables */
var label = [];
var x = [];
var y = [];
for (var i = 1; i < $internal.data.length; i++)
{
label.push($internal.data[i][0]);
x.push([parseInt($internal.data[i][1]), parseInt($internal.data[i][3])]);
y.push([parseInt($internal.data[i][2]), parseInt($internal.data[i][4])]);
}
/* create all the shapes you want with the data stored */
var shapes = [];
var traces = [];
for (var i = 0; i < $internal.data.length - 1; i++) {
shapes.push({
type: 'rectangle',
xref: 'x',
yref: 'y',
fillcolor: 'rgba(50, 171, 96, 0.7)',
x0: x[i][0],
y0: y[i][0],
x1: x[i][1],
y1: y[i][1],
line: {
color: 'rgba(50, 171, 96, 1)'
}
});
traces.push({
x: [x[i][0] + 3.5],
y: [y[i][0] - 2],
text: label[i],
mode: 'text'
});
}
数组shapes
用于存储矩形,而 则trace
用于标记每个矩形。
您可以根据需要自定义图表,有很多选项可用,这就是 javascript 及其强大库的魅力所在。在这个例子中,我使用了plotly.js
您可以通过将 URL 粘贴到 Excel 中来加载它Funfun Excel 插件。以下是我的例子:
编辑
如果您想在形状内写入文本,您只需要另一个局部变量及其存储的值,并找到正确的坐标:
var textInRectangles = ["First", "second"];
...
traces.push({
x: [x[i][0] + 2.5],
y: [y[i][0] + 4],
text: textInRectangles[i],
textfont: {
color: 'black',
size: 9,
family: 'Arial'
},
mode: 'text'
});
我修改了前面示例的链接。
披露:我是 Funfun 的开发人员。