Excel图表中如何让data label显示在axis element上方?
Excel图表中如何让data label显示在axis element上方?
嗨,我来帮你搞定这个Excel图表的层级坑!你遇到的情况我太懂了——就是图表坐标轴的层级居然比数据标签(或者标注框)还高,导致坐标轴的数字直接透过标签的文本框透出来,重叠多了连标签内容都看不清,对吧?就像碰到的两种情况:要么是偏移的标签被坐标轴线条穿过去,要么是坐标轴数字直接叠在标签上面,特别闹心。
Excel默认的UI里确实没给直接调整坐标轴和数据标签层级的按钮,不过我有几个实用的解决办法:
用自定义形状模拟数据标签(最稳妥的方法)
先把原来的系统数据标签删掉,然后插入文本框(或者你需要的标注框),输入对应的标签内容,拖到你想要的位置。选中这个文本框右键,直接选「置于顶层」,这样它就会完完全全覆盖在坐标轴上面,再也不会被穿透了。要是想让内容和图表数据联动,还可以选中文本框后在编辑栏输入=目标单元格地址,数据更新时文本框内容也会跟着变,和原生数据标签一样方便。调整位置从根源减少重叠
右键点击坐标轴选「设置坐标轴格式」,在「坐标轴选项」里可以调整标签的位置或者偏移量,比如把坐标轴标签往图表内部挪一点,或者把数据标签往远离坐标轴的方向微调,从根源上避免两者重叠,也就不用纠结层级问题了。用VBA强制调整层级(适合有基础的同学)
要是你会点VBA,直接用代码把数据标签怼到最顶层就行:按下Alt+F11打开VBA编辑器,找到对应的工作表插入模块,输入这段代码(记得把代码里的「图表 1」换成你自己的图表名称):
Sub BringDataLabelsToFront() Dim cht As Chart Dim srs As Series Set cht = ActiveSheet.ChartObjects("图表 1").Chart For Each srs In cht.SeriesCollection srs.DataLabels.Select SendKeys "+{F10}o~" Next srs End Sub
运行之后,数据标签的层级就会被强制调到最上面,坐标轴再也不会抢风头了。
备注:内容来源于stack exchange,提问作者Tommy Woldt




