绘制超出轴最大值的数据点作为最大值

时间:2013-02-07 17:07:45

标签: excel excel-vba charts plot outliers vba

我有一组自动生成的图表,我需要稍微调整一下。我的Y轴从0到1000,但我有一些超出此范围的值。对于那些超过1000的值,我想在1000处绘制一个点,以提醒用户数据存在的事实。

所需特征:如果能够根据单元格值(即单元格值大于1000)更改单个数据点的格式,那将是非常棒的;这不是必要的,但它会使查看数据(近100个图表)变得更加容易。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以通过添加值为1000的新数据系列在散点图上实现此效果,其中现有系列超过1000且其他位置有空白。必须对每个轴进行此操作,这些轴的值超过您设置的最大值。


例如,如果散点图上的最大Y值设置为10,则此处是一个小数据集和附加数据系列。

data with new series


将新Y系列添加到图表时,您需要同时指定添加的Y系列和原始X系列范围。如果希望图例指示新数据点的含义,请提供描述性系列名称,

adding the new series to the chart


这是图表的(略微)清理版本,其中包含Y轴最大值和新数据点的图例条目。如果超过最大值的点位于X轴上,您将经历类似的过程。

the new chart

答案 1 :(得分:0)

如果您使用宏来构建图表,是否介意使用宏首先向数据中添加其他列?你可以添加两个额外的列,第一个用这个简单的代码来调整你的一些数据:

ActiveCell.FormulaR1C1 = "= IF(RC[-1]>999, 1000,RC[-1])"
....then fill down

然后下一列有一个简单的数据点计数(稍后用于找到你正在修改的点):

Dim i as integer
Dim rng As Range

Set rng = Range("Your Range")
For Each Cell In rng
i = i + 1
cell.value = i
Next

现在绘制图形,就像使用宏一样,除非您现在使用“调整值”列。并添加此格式化宏:

Dim rng As Range
Dim Point As String

Set rng = Range("c2:c9")
For Each Cell In rng

If Cell.Value > 999 Then
Point = Cell.Offset(0, 1).Value

ActiveSheet.ChartObjects("Your Chart").Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Points(Point).Select
Selection.MarkerStyle = -4105
    With Selection
    .MarkerStyle = 2
    .MarkerSize = 25
    .MarkerColor = 'Your Color (could base this off of the degree that it is above 1k)
    End With
End If
Next

这对系统有点强烈的支持,但它会为你提供所需的东西。

祝你好运。

-ZL