带有数据的单元格的图表颜色

问题的形成

我希望直方图上的列(或饼图上的切片等)自动具有用于用源数据填充相应单元格的颜色:

预料到个别同志的惊讶和愤慨的叫喊声,需要注意的是,当然,图表中填充的颜色也可以手动更改(右键单击该列- 点/系列格式 (格式化数据点/系列) 等等——没有人争辩。 但在实践中,有很多情况下,直接在有数据的单元格中这样做更容易,更方便,然后应该自动重新绘制图表。 例如,尝试为此图表中的列设置按区域填充:

我想你明白了,对吧?

解决方案

只有宏才能做到这一点。 因此,我们开 Visual Basic 编辑器 从标签 开发人员 (开发者——Visual Basic 编辑器) 或按键盘快捷键 Alt + F11键, 通过菜单插入一个新的空模块 插入 - 模块 并在那里复制这样一个宏的文本,这将完成所有工作:

Sub SetChartColorsFromDataCells() If TypeName(Selection) <> "ChartArea" Then MsgBox "Сначала выделите диаграмму!" 退出 Sub End If Set c = ActiveChart For j = 1 To c.SeriesCollection.Count f = c.SeriesCollection(j).Formula m = Split(f, ",") Set r = Range(m(2)) For i = 1 至 r.Cells.Count c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _ r.Cells(i).Interior.Color Next i Next j End Sub  

您现在可以关闭 Visual Basic 并返回 Excel。 使用创建的宏非常简单。 选择图表(图表区域,而不是绘图区域、网格或列!):

并使用按钮运行我们的宏 标签 开发人员 (开发者——宏) 或使用键盘快捷键 Alt + F8键. 在同一个窗口中,在频繁使用的情况下,可以使用按钮为宏分配键盘快捷键 参数 (选项).

PS

唯一美中不足的是,在使用条件格式规则将颜色分配给源数据的单元格的情况下,无法使用类似的功能。 不幸的是,Visual Basic 没有用于读取这些颜色的内置工具。 当然,有某些“拐杖”,但它们并不适用于所有情况,也不适用于所有版本。

  • 什么是宏,如何使用它们,在 Visual Basic 中插入宏代码的位置
  • Excel 2007-2013 中的条件格式
  • Excel 2013 中图表的新增功能

发表评论