Я пытаюсь получить очки из диаграммы в Excel VBA?
Я составил таблицу оценок учеников в excel, и я хочу поставить условие, то есть, если отметки на диаграмме больше 90, то цвет точки меняется на красный, а если меньше 90, то цвет зеленый. Как я могу сделать это с помощью VBA?
2 ответа
Вот быстрый пример, который должен дать вам все, что вам нужно:
Sub Macro1()
Dim crt As Chart
Dim ser As Series
Dim val As Long
Dim pnt As Point
Set crt = ActiveChart
Debug.Print "Number of Series: ", crt.SeriesCollection.Count
Set ser = crt.SeriesCollection(2)
Debug.Print "# Points in Series 2: ", ser.Points.Count
NumPoints = ser.Points.Count
Debug.Print "Values for Series 2:"
For i = 1 To NumPoints
val = ser.Values(i)
Debug.Print " ", i, val,
Set pnt = ser.Points(i)
If val > 6 Then
pnt.MarkerForegroundColorIndex = 4
pnt.MarkerBackgroundColorIndex = 4
Debug.Print pnt.MarkerForegroundColor, pnt.MarkerForegroundColorIndex
Else
Debug.Print
End If
Next i
End Sub
Вы должны установить цвет, используя значение индекса, если можете, так как при этом сохраняются постоянные цвета. Также обратите внимание, что неиндексный номер цвета начинается с -1, поэтому его нельзя использовать для проверки фактического значения цвета. Он устанавливается, однако, как только вы измените цвет. Вы также захотите изменить цвет фона в дополнение к переднему плану, если хотите, чтобы заливка была такой же, как у края.
Вместо использования макроса сделайте две серии. Предположим, что оценки в B2:B10. Выберите C2:C10 с C2 активной ячейкой. Тип:
=IF(B2>=90,B2,NA())
затем удерживайте Ctrl и нажмите Enter, что введет формулу во все ячейки выбранного диапазона.
Выберите D2:D10 с D2 активной ячейкой. Тип
=IF(B2<90,B2,NA())
затем удерживайте Ctrl и нажмите Enter.
Значение из столбца B будет отображаться только один раз, в столбце C или D, в зависимости от его значения, а другой столбец будет содержать ошибку #N/A
, которая не отображается с помощью маркера.
Создайте диаграмму со столбцами C и D, отформатируйте C с хорошим цветом и D с плохим цветом. Красный и зеленый не являются хорошим выбором из-за преобладания красно-зеленой дальтонизма. Попробуйте синий для хорошего и оранжевый для плохого.