ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6987|回复: 5

[分享] [VBA]动态折线图表上不显示数据点为"0”值的(极)点

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-5-28 13:55 | 显示全部楼层 |阅读模式
在作趋势图时会遇到0的情况



有时0值经常就表示没有的情况,如果显示在图表上会引起误解



下面的附件采用VBA对折线图优化使数据出现0的情况时不显示该数据点



Sub 图表数据点美化()

'xunwening 记录
'数据点为“0”或Null值图形不显示
'

'=============================
  Dim Ser As Series

    Dim i As Long
    Dim k As Long
    Set Ser = ActiveChart.SeriesCollection(1)
    Debug.Print Ser.Points.Count
    With Ser.Border
        .ColorIndex = 55
        .Weight = xlThin
        .LineStyle = xlContinuous
    End With
            
    With Ser
        .MarkerBackgroundColorIndex = 3 '前景颜色
        .MarkerForegroundColorIndex = 55 '背景颜色
        .MarkerStyle = xlDiamond        '样式
        .Smooth = False
        .MarkerSize = 4                 '大小
        .Shadow = False                 '阴影
            
    End With
   
    For i = 1 To Ser.Points.Count
        k = i + 1
'判断图表上数据点的值为“0”或Null值
'如果第i点值为空那么必须清除第i点和第i+1点的数据系列格式

        If Ser.Values(i) = 0 Then
        
'清除第i点的:数据系列格式—图案—线型
            With Ser.Points(i).Border
                .Weight = xlHairline
                .LineStyle = xlNone
            End With
'清除第i点的:数据系列格式—图案—数据标记

             With Ser.Points(i)
            '.MarkerBackgroundColorIndex = 3            '前景颜色
            '.MarkerForegroundColorIndex = xlAutomatic  '背景颜色
            .MarkerStyle = xlNone 'xlDiamond            '样式
            .MarkerSize = 5                             '大小
            '.Shadow = False
            End With
            
            If k = Ser.Points.Count Then Exit For
            
'清除第i+1点的:数据系列格式—图案—线型
            With Ser.Points(k).Border
                .Weight = xlHairline
                .LineStyle = xlNone
            End With
            
        End If
    Next i
   
              
'=============================
End Sub
折线图美化.rar (12.82 KB, 下载次数: 137)

[ 本帖最后由 xuwenning 于 2010-5-28 16:33 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-5-28 15:27 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 15:47 | 显示全部楼层
原帖由 snood 于 2010-5-28 15:27 发表
空单元格会报错

一般不建议使用空单元格-——空单元格数据可以转换为0值
如果非要用空单元格
修改代码
..................................
If Ser.Values(i) = 0 Then
.........................
为:
..........................................
If  Ser.Values(i) = 0  or  Ser.Values(i) = " " Then
............................................
其他不用改变

[ 本帖最后由 xuwenning 于 2010-5-28 15:50 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 15:49 | 显示全部楼层

代码中没有错误处理机制,请自行添加

TA的精华主题

TA的得分主题

发表于 2010-5-29 07:34 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-31 08:07 | 显示全部楼层
原帖由 dul 于 2010-5-29 07:34 发表
谢谢分享,学习了

谢谢DUL的捧场
你的大作我是下载了不少的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-17 11:13 , Processed in 0.038979 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表