但学会了,你也能让老板眼前一亮!
各位亲爱的表弟表妹们,今天我们要聊一个名字既高深又有点儿迷惑的VBA对象:HiLoLines。
第一次看到这个词,我以为它是某个DJ的新单曲——“嗨咯莱茵斯”!
没错,它出现在股价图或者高低收盘图里,就是连接最高点和最低点的那根竖线,顺便在最高点和最低点上给你标个小横杠,像给数据点穿了个“T字裤”(手动狗头)。
一、HiLoLines 到底是干啥的?
简单说:
Hi = 最高值
Lo = 最低值
Lines = 把它们连起来
它常用于金融场景(股票开盘/最高/最低/收盘),但在项目管理、质量管控、气温变化等需要显示“数据波动范围”的场合,也非常能打。
举个例子:
你有一组产品每天的最高价和最低价。
光看数字老板头晕,画成高低线图——一目了然:
哇,今天波动好大!
哇,这个产品好稳!
二、VBA 里怎么“画”出 HiLoLines?
别怕,不写100行代码,5行内搞定。
步骤1:你先有准备好数据的表格,例如:
步骤2:插入一个“股价图 - 开盘-盘高-盘低-收盘图”,选那个只有高低线的子类型。
步骤3:打开VBA编辑器(Alt+F11),插入模块,写入:
Sub 让HiLoLines出来见人() Dim cht As Chart Set cht = ActiveSheet.ChartObjects(1).Chart ' 让HiLoLines显示出来(是的,它默认可能是关的) cht.ChartGroups(1).HiLoLines.Select Selection.Format.Line.Visible = msoTrue ' 顺便给它上个色,骚气一点 With Selection.Format.Line .ForeColor.RGB = RGB(255, 0, 0) ' 红色,显眼包 .Weight = 2 ' 线粗一点,显气质 End WithEnd Sub
跑一下,你的高低线就红彤彤地出现了。
三、HiLoLines 的几个“骚操作”
1. 控制是否显示“高低标记”(UpBars / DownBars)
HiLoLines 管的是竖线,
UpBars 管上涨日(收盘>开盘)用绿块,
DownBars 管下跌日用红块。
如果再加上 HiLoLines = 完整版股票分析图。
cht.ChartGroups(1).UpBars.Format.Fill.ForeColor.RGB = RGB(0, 176, 80) ' 原谅绿
cht.ChartGroups(1).DownBars.Format.Fill.ForeColor.RGB = RGB(255, 0, 0) ' 警示红
2. 隐藏 HiLoLines 的“横杠端点”
有一种需求:只想要竖线,不要顶端的横杠。
抱歉,HiLoLines 自带的端点(横线)去不掉。
但你可以变通:把线宽调细,或者用“高低点连线”代替(那是另一条路)。
3. 批量改10张图的线型
For i = 1 To 10 With Sheets("报告").ChartObjects(i).Chart.ChartGroups(1).HiLoLines.Format.Line .Visible = msoTrue .DashStyle = msoLineDashDot ' 点划线,骚吗? End WithNext i
四、一个真实笑话(来自某次翻车)
有一次我兴致勃勃给领导展示“HiLoLines做的动态图”,结果领导问:
“为什么这根线一会儿粗一会儿细?”
我定睛一看——MD,有个单元格的数值被我写了文本“--”,VBA没报错,但图表把文本当0处理了,导致最低点掉到地板,线被拉得巨长。
从那以后我学会:
HiLoLines 之前,先清数据异常值。
' 防呆小代码:把非数字变空
For Each cell In Range("B2:C100") If Not IsNumeric(cell.Value) Then cell.Value = ""Next
五、总结(记住这3句话)
HiLoLines 不是让你嗨,是让你连最高最低点的竖线。
VBA控制它,核心就三件套:.Visible、.Color、.Weight。
别让它单独工作,配合 UpBars/DownBars 才是一套股票级呈现。
彩蛋:一键生成“HiLoLines骚气图”完整代码
Sub 一键生成HiLo骚图() Dim rng As Range Dim chtObj As ChartObject ' 假设数据在A1:C10,首列日期,二列最高,三列最低 Set rng = ActiveSheet.Range("A1:C10") Set chtObj = ActiveSheet.ChartObjects.Add(Left:=100, Width:=400, Top:=50, Height:=250) With chtObj.Chart .SetSourceData Source:=rng .ChartType = xlLineHighLowClose ' 高低线图 ' 骚操作开始 With .ChartGroups(1).HiLoLines.Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(255, 128, 0) ' 橙色 .Weight = 2.5 End With .HasTitle = True .ChartTitle.Text = "看,这就是HiLoLines" End WithEnd Sub
粘贴进VBA模块,按F5,你就是办公室里最懂HiLoLines的骚年。
转发提示:
如果觉得有用,欢迎转发给那个“只会用默认柱状图”的同事,救人一图,胜造七级浮屠。