跳至主要内容

如何根据单元格颜色在Excel中为图表着色?

Author: Xiaoyang Last Modified: 2025-07-31

当你在 Excel 中创建标准图表时,例如柱状图或条形图,系列或数据点会被分配 Excel 的默认颜色,这可能与数据区域中的填充颜色不匹配。然而,在许多场景下——例如仪表板、报告或数据可视化——你希望图表的柱状图能够完全匹配已应用于源单元格的颜色。这有助于保持视觉一致性,使数据解读更加直观,或强化通过颜色作为意义提示的分类分组。例如,你可能希望图表中的每个柱子都能反映汇总表中应用的颜色编码,如下方截图所示。Excel 并未提供直接内置的功能来自动将单元格填充颜色(尤其是手动设置的颜色)映射到图表元素上,因此需要采用几种不同的方法,具体取决于单元格颜色是手动设置还是基于公式或规则。下方提供了多种实用解决方案,帮助你在不同场景下有效地实现这种对应关系。

color chart based on cell color

使用 VBA 代码根据单元格颜色为具有一个或多个数据系列的图表着色

使用卓越功能根据单元格颜色为具有一个或多个数据系列的图表着色


使用 VBA 代码根据单元格颜色为具有一个或多个数据系列的图表着色

根据单元格颜色为单个数据系列的图表着色

如果你希望图表的柱状图继承相应单元格的填充颜色,并且你的颜色分配是手动完成的(不是通过条件格式或公式),可以使用VBA同步图表柱状颜色和原始单元格颜色。此技术特别适用于单一系列图表,其中视觉匹配对于清晰性或报告标准至关重要。

1. 首先,选择你的数据并创建一个条形图或柱状图。为此,请选择相关的单元格并点击 插入 > 插入柱形图或条形图。你应该会看到类似下方截图的默认图表:

insert a Column or Bar Chart

2. 按 ALT + F11 打开Microsoft Visual Basic for Applications (VBA) 编辑器。

3. 在VBA窗口中,点击 插入 > 模块。然后,将以下代码复制并粘贴到模块窗口中。该脚本将更新每个图表柱以匹配其相应单元格的填充颜色。

VBA代码:根据单元格颜色为单个数据系列的图表柱着色:

Sub ColorChartColumnsbyCellColor()
'Updateby Extendoffice
    Dim xChart As Chart
    Dim I As Long, xRows As Long
    Dim xRg As Range, xCell As Range
    On Error Resume Next
    Set xChart = ActiveSheet.ChartObjects("Chart 1").Chart
    If xChart Is Nothing Then Exit Sub
    With xChart.SeriesCollection(1)
        Set xRg = ActiveSheet.Range(Split(Split(.Formula, ",")(1), "!")(1))
        xRows = xRg.Rows.Count
        Set xRg = xRg(1)
        For I = 1 To xRows
            .Points(I).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(xRg.Offset(I - 1, 0).Interior.ColorIndex)
        Next
    End With
End Sub
注意在上面的代码中,将Chart1替换为实际图表的名称(当图表被选中时可以在名称框中找到)。如果稍后重命名图表,请相应地更新宏代码。

4. 输入代码后,按F5运行宏。现在,图表柱应反映出源单元格的填充颜色,从而立即呈现出视觉上的对应关系,如下方截图所示:

run vba code to color the chart by cell color

这种方法适用于单元格填充颜色是手动设置并且预计频繁手动调整的情况下。不过请注意,如果单元格颜色发生变化,则需要重新运行VBA以更新图表,因为这种关联并非动态。此外,请记得将工作簿保存为启用宏的文件(.xlsm),以便代码得以保留。


根据单元格颜色为多数据系列的图表着色

如果你的图表包含多个数据系列(例如,多个产品随时间变化或不同类别),你可以使用类似的 VBA 方法将每个柱段或数据点与其源单元格的填充颜色相对应。这可以帮助你的报告保持视觉一致性,并让观众轻松在工作表和图表之间交叉引用数据。

1. 设置你的数据并创建一个多系列条形图或柱状图,如下所示:

Color the chart with multiple data series based on cell color

2. 按 ALT + F11 打开 VBA 编辑器。

3. 在 VBA 窗口中,点击 插入 > 模块 并粘贴以下代码:

VBA 代码:根据单元格颜色为多数据系列的图表柱着色:

Sub CellColorsToChart()
'Updateby Extendoffice
    Dim xChart As Chart
    Dim I As Long, J As Long
    Dim xRowsOrCols As Long, xSCount As Long
    Dim xRg As Range, xCell As Range
    On Error Resume Next
    Set xChart = ActiveSheet.ChartObjects("Chart 1").Chart
    If xChart Is Nothing Then Exit Sub
    xSCount = xChart.SeriesCollection.Count
    For I = 1 To xSCount
        J = 1
        With xChart.SeriesCollection(I)
            Set xRg = ActiveSheet.Range(Split(Split(.Formula, ",")(2), "!")(1))
            If xSCount > 4 Then
                xRowsOrCols = xRg.Columns.Count
            Else
                xRowsOrCols = xRg.Rows.Count
            End If
            For Each xCell In xRg
                .Points(J).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
                .Points(J).Format.Line.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
                J = J + 1
            Next
        End With
    Next
End Sub

4. 按 F5 运行此代码。你的图表系列将更新以反映数据范围内的单元格填充颜色,如下图所示:

run vba code to color the chart with multiple data series based on cell color

注意事项:
  • 代码默认将图表称为 Chart1。请根据需要调整以匹配图表的实际名称。
  • 此方法也支持折线图,不仅限于条形图或柱状图类型。
  • 如果遇到任何问题(例如没有更新或出现错误),请检查图表的数据系列和单元格颜色范围是否一一对应。

虽然此技术为你手动配色的数据提供了完全的控制和灵活性,但它无法处理通过条件格式或公式自动生成颜色的情况。在那些情况下,请参见下面基于公式的和条件格式化的解决方案以获取更多动态选项。


使用卓越功能根据单元格颜色为一个或多个数据系列的图表着色

尽管VBA可以同步图表颜色与单元格填充颜色,但其需要手动运行代码,并且一些用户可能对宏或VBA安全提示感到不适。如果你正在寻找一种更简化且交互性强的方法,Kutools for Excel中的“根据单元格颜色更改图表颜色”功能提供了一个高效的解决方案。该工具可自动将单元格填充颜色应用于相应的图表元素,无论你的图表中有一个还是多个数据系列,并且即使以后更新了单元格颜色(简单的重新应用即可刷新映射)。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...
提示: 要使用此“根据单元格颜色更改图表颜色”工具,你需要先下载并安装 Kutools for Excel。整个过程非常简单,可以极大地加快颜色映射的速度。

安装完 Kutools for Excel 后,按照以下步骤操作:

1. 插入你想着色的图表。选择图表,然后导航至 Kutools > 图表 > 图表工具 > 根据单元格颜色更改图表颜色,如下图所示:

click Change Chart Color According to Cell Color feature of kutools

2. 当提示出现时,只需在弹出的对话框中点击 确定 即可。

a prompt box is popped out

3. 图表将立即更新以匹配你的单元格颜色,如下方示例所示:

根据单元格颜色为单个数据系列的图表着色
Color the chart with one data series based on cell color

根据单元格颜色为多个数据系列的图表着色
Color the chart with multiple data series based on cell color

此功能非常适合那些经常需要自动匹配图表颜色并希望获得可重复使用的解决方案的人,无论数据更新与否。相比手动格式化或运行宏,它节省了大量时间,特别是在多人编辑数据或图表展示的协作环境中尤为有用。

立即下载并免费试用 Kutools for Excel!


更多相关图表文章:

  • 在Excel中创建覆盖另一条形图的条形图
  • 当我们使用两个数据系列创建一个簇状条形图或柱形图时,两个数据系列的条形图会并列显示。但是,有时我们需要使用叠加或重叠条形图来更清楚地比较两个数据系列。本文将讨论如何在Excel中创建重叠条形图。
  • 在Excel中复制一个图表格式到其他图表
  • 假设你的工作表中有多个不同类型图表,你已经根据需要格式化了一个图表,现在想要将这个图表的格式应用到其他图表。当然,你可以手动逐一格式化其他图表,但这会浪费很多时间,那么有没有快速或简便的方法可以让你在Excel中把一个图表的格式复制到其他图表呢?
  • 在图表中突出显示最大值和最小值数据点
  • 如果你有一个柱状图,想用不同颜色突出显示最高或最低的数据点以使其脱颖而出,如下方截图所示。你该如何识别最高和最低值并快速在图表中高亮这些数据点呢?
  • 在Excel中创建阶梯图
  • 阶梯图用于显示在不规则间隔内发生的变化,它是折线图的扩展版本。但是,在Excel中没有直接的方式来创建它。本文将逐步介绍如何在Excel工作表中创建阶梯图。
  • 在Excel中创建进度条图表
  • 在Excel中,进度条图表可以帮助你监控向目标的进展情况,如下方截图所示。但是,如何在Excel工作表中创建进度条图表呢?

最佳 Office 办公效率工具

🤖 Kutools AI 助手:基于智能执行,彻底革新数据分析 生成代码创建自定义公式分析数据并生成图表调用 Kutools Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


Office Tab 为 Office 带来标签式界面,让你的工作更加轻松

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!