vba数据折线图怎么做(功能模块-图表-02-折线图动态标红超差点)

  • 系统:Windows 7
  • 软件:Excel 2010

今天讲讲如何在图表中特别显示异常点

涉及的图表为折线图,示例数据表示有几个人的体重和正常体重范围,将异常点在折线图上表示出来(数字只是示意) 关于何为异常,可以多样化,读者可以发散思维


方法1:手动实现
  1. 核心要点是设置辅助行,辅助行中只显示异常值
  2. =IF(OR(E6>E7,E6<E8),E6,#N/A),这句的公式的含义如下:如果E6单元格的数值大于E7单元格或者E6单元格的数值小于E8,则取值E6单元格数值,否则取值#N/A
  3. 人话:实际体重大于120kg或者小于40kg时,则该体重为异常值,显示在辅助行
  4. 图表设置,辅助行的线条设置为无线条,数据标记选项设置成圆形,填充红色
  5. 其实是将辅助行挡住实际体重的曲线,因为辅助行只有异常值,所以曲线上看起来只有异常值点显示红色

vba数据折线图怎么做(功能模块-图表-02-折线图动态标红超差点)(1)

图1 动态效果图

vba数据折线图怎么做(功能模块-图表-02-折线图动态标红超差点)(2)

图2 公式设置

vba数据折线图怎么做(功能模块-图表-02-折线图动态标红超差点)(3)

图3 数据标记设置


方法2:代码实现
  1. 方法1显示异常值主要采用辅助行覆盖原体重曲线的方法,缺点是:
  • 对于异常值的点不能单独设置数据标记类型
  • 异常值数据标记大小也不能特别化,要不就无法覆盖正常的体重曲线
  1. 代码方法无需设置辅助行,逻辑过程如下
  • 初始化体重曲线,所有点设置成一样的
  • 根据判断条件识别异常点,对异常点进行单独设置
  1. 关键方法
  • Set point1 = line1.Points(k)获取折线上从左至右的第k个点
  • point1.MarkerForegroundColor = RGB(0, 255, 0) 设置标记线颜色
  • point1.MarkerBackgroundColor = RGB(255, 0, 0) 设置数据标记填充色
  1. 整个代码由两个Sub构成,第一个Sub获取异常点位置及线条初始化,第二个完成异常点的设置

vba数据折线图怎么做(功能模块-图表-02-折线图动态标红超差点)(4)

图4 效果图

Sub 异常点识别() Set sht = ThisWorkbook.Worksheets("示例") Set ch1 = sht.ChartObjects("体重图") Set line1 = ch1.Chart.SeriesCollection("体重") '线条初始化 With line1 .MarkerStyle = xlMarkerStyleCircle .MarkerSize = 7 End With line1.MarkerForegroundColor = RGB(0, 0, 0) '标记线颜色 line1.MarkerBackgroundColor = RGB(0, 0, 0) '填充色 For j = 5 To 10 Step 1 ti_zhong = sht.Cells(6, j) zui_zhong = sht.Cells(7, j) zui_qing = sht.Cells(8, j) If ti_zhong > zui_zhong Or ti_zhong < zui_qing Then di_ji = j - 4 Call 设置异常点(di_ji) End If Next j End Sub Sub 设置异常点(k) Set sht = ThisWorkbook.Worksheets("示例") Set ch1 = sht.ChartObjects("体重图") Set line1 = ch1.Chart.SeriesCollection("体重") Set point1 = line1.Points(k) point1.MarkerStyle = xlMarkerStyleTriangle point1.MarkerSize = 15 point1.MarkerForegroundColor = RGB(0, 255, 0) '标记线颜色 point1.MarkerBackgroundColor = RGB(255, 0, 0) '填充色 End Sub

vba数据折线图怎么做(功能模块-图表-02-折线图动态标红超差点)(5)

图5 代码截图


以上,为本次的介绍内容,下回见。

本文首发于Excel高效办公之VBA。排版和细节略作修改,发于头条

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页