2014-12-30 2 views
0

Допустим, у меня есть таблица внизу, и я хочу создать график рассеяния.Измените прозрачность маркера с помощью Excel VBA

X Y  Weight 

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

Я ищу способ, чтобы установить прозрачность маркеров на основе значений в столбце, так что маркер каждой точки имеет свой индивидуальный уровень прозрачности, который не может быть таким же, как в других точках. Причина, по которой я хочу, - это то, что вес очков не равен.

Одним из решений было бы создать дополнительное количество точек (вес - 1) вручную и построить их все с соответствующим уровнем прозрачности. Другим решением было бы установить уровень прозрачности маркера для каждой точки вручную. Однако ни один из них не является логичным, так как количество очков действительно велико!

Я пробовал следующее с 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 

Любая помощь приветствуется

ответ

0

Я сделал еще одно решение для написания этого небольшого питона скрипт, который создает больше очков в зависимости от веса каждой точки, например если вес точки равен 12, то создаются 12 одинаковых точек со спецификациями этой точки. Затем сохранили все это в csv и построили его и изменили непрозрачность для всех маркеров вручную (это легко) на число, которое дало мне удовлетворительный результат. По мере создания дополнительных точек накладываются друг на друга, конечный продукт будет показывать вес каждой точки.

1

Существует ошибка в Excel (я использую Excel 2013). Когда вы устанавливаете прозрачность заливки, стиль линии переходит в автоматический режим, и вы не видите прозрачность. Если вы с помощью VBA вернули стиль в сплошное, прозрачность будет установлена ​​в 0. Я смог использовать следующее обходное решение: (1) MANUALLY Установите цвет заливки на белый (или тот же, что и фон диаграммы). Если вы установите его в коде, он будет REVERT ... (2) Добавить перед строкой With (a) Selection.MarkerSize = 2 и (b) Selection.Border.LineStyle = msoLineFileNone и (3) Измените строку With на строку ' с Selection.format.Line»и добавьте перед .transparency = (а) .Visible = msoTrue и (б) .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 
Смежные вопросы