使用Excel VBA修改标记透明度

比方说,我有下面的表格,我想做一个散点图。

XY Weight 1 0.5 12 2 0.1 23 3 0.2 36 4 0.5 27 1 0.2 4 

我正在寻找一种方法来根据列中的值设置标记的透明度,以便每个点的标记都具有与其他点不同的单独透明度级别。 我想要这个的原因是分数的重量是不相等的。

一种解决方法是手动创build更多的点数(权重-1),并用适当的透明度级别来绘制它们。 另一个解决scheme是手动设置每个点的标记透明度级别。 然而,这些都是合乎逻辑的,因为点的数量真的很大!

我已经用VBA尝试了下面的内容,但没有运气。

 Sub TransparencyModifier() ' ' TransparencyModifier Macro ' ' Dim i as Integer For i = 1 to 5 ActiveChart.SeriesCollection(1).Select ActiveChart.SeriesCollection(1).Points(i).Select With Selection.Format.Fill .Transparency = Cells(i+1,3).Value/100 End With Next i End Sub 

任何帮助表示赞赏

Excel中有一个错误(我正在使用Excel 2013)。 当您设置填充透明度时,线条样式将变为自动,而您看不到透明度。 如果您通过VBA将样式设置为固定,则透明度将设置为0.我能够使用以下解决方法:(1)手动将图表的填充颜色设置为白色(或与图表背景相同)。 (2)在With行之前添加(a)Selection.MarkerSize = 2和(b)Selection.Border.LineStyle = msoLineFileNone和(3)将你的With行改为'使用Selection.format.Line'并添加.transparency =(a).Visible = msoTrue和(b).ForColor.ObjectThemeColor = msoThemeColorAccent1

 Sub TransparencyModifier() Dim i As Integer For i = 1 To 5 ActiveChart.SeriesCollection(1).Select ActiveChart.SeriesCollection(1).Points(i).Select Selection.MarkerSize = 2 Selection.Border.LineStyle = msoLineFillNone With Selection.format.Fill .Visible = msoFalse End With With Selection.format.Line .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorAccent1 .transparency = Cells(i + 1, 3).Value / 100 End With Selection.Border.LineStyle = msoLineFillNone Next i End Sub 

我又写了一个解决scheme,写一个小的python脚本,根据每个点的权重创build更多的点,例如,如果一个点的权重是12,那么将创build12个与这个点的规格相同的点。 然后将所有这些保存在一个csv中,并绘制它,并手动更改所有标记的不透明度(这很容易)为一个数字,让我满意的结果。 由于叠加点彼此叠加,最终产品也会显示每个点的重量。