如果您正在创建新文件:

如果您正在创建新文件:

我正在处理一个在早期版本的 Excel(我认为是 2003 年)中创建的电子表格,它使广泛的使用颜色编码进行组织。不幸的是,它是使用旧版本的配色方案构建的,基本上没有一种颜色与 2010 主题中的颜色相匹配(纯白色和纯黑色除外)。所以每次我想让某些东西符合以前存在的配色方案时,我要么必须选择自定义颜色并手动选择,要么必须从现有单元格复制格式并粘贴到目标单元格中​​(这很烦人,因为它还会复制边框等内容)

我找到了页面布局/主题/颜色设置,但似乎我所能做的只是将可选颜色更改为其中一种预设,或者创建一个全新的调色板 - 而且我只能选择调色板中的几种颜色,而不是全套颜色。它会通过制作您选择的颜色的更浅或更深的版本来创建其余的颜色。此外,执行任何一项操作都会更改电子表格中已经使用的颜色,前提是它们与之前方案中使用的颜色完全匹配。这意味着以前用相似色调来表示它们的关系的东西现在被涂上了不同的颜色,一些保留在旧方案中,而另一些则自动更改为新方案。它基本上破坏了整个系统。

我想要的是能够从旧文档中添加我使用的特定颜色,这样它们就会出现在颜色选择器中,而我不必去搜索它们。旧版本的 Excel 具有此功能 - 有许多可自定义的方块,您可以将它们设置为任何您想要的颜色,它们将与主题一起保存。我想您甚至可以添加更多方块,我忘了。(不再安装旧版本。)他们是否删除了此功能以支持他们的“主题”?还是它隐藏在某个地方?我对这个配色方案功能一点也不感兴趣。我只想使用我想要使用的任何颜色(特别是与此文档匹配的颜色),而不必担心它们是否与某个任意预设调色板匹配。我真的不想使用新的方案设置重新着色整个工作表,这样我就可以在这里保持一定程度的一致性。

答案1

嗯,恐怕你运气不佳。

在 Excel 2003 中,有一个调色板,其中有 40 种可自定义的颜色供工作表使用,还有 16 种额外的颜色供图表使用。默认调色板设置可以通过文件进行自定义和更改,图表颜色可以在工作表单元格中使用,反之亦然。

在此处输入图片描述

从 Office 2007 开始,这一原则被“主题”颜色所取代,主题颜色由两种文本和六种强调色组成,并且有不同强度可供选择。所有 Office 应用程序的主题都是一致的。切换主题非常容易,并且已使用主题颜色格式化的项目将在切换主题时发生变化。

如果不超过 6 种强调色,那么用您喜欢的颜色选择来创建新主题也相当容易。

始终可以从主题颜色中偏离并挑选自定义颜色,从 127 种标准颜色和几种灰色调的调色板中选择,或者通过使用 RGB 或 HSL 值定义自定义颜色。遗憾的是,没有简单的方法可以将此类自定义选择添加到标准调色板中。

什么是极其然而,困难的是使用超过两种文本和 6 种强调色来定义自定义调色板,即类似于 Excel 2007 版之前提供的 56 种颜色。

您是否知道 Excel 和 Word 一样具有样式?Excel 样式可以包括字体、字体大小、数字格式、文本颜色和填充颜色。您可以利用 Excel 样式功能,创建不同的样式,并精确设置单元格所需的颜色和其他格式。

另一种方法(虽然不容易,而且需要一些工作)是创建一个新工作表,使用两个 8 列 7 行的网格,并手动将每个单元格的颜色设置为原始 Excel 2003 文件中的 RGB 值。使用其中一个网格作为填充颜色,另一个网格作为文本颜色。然后,您可以选择具有所需颜色的单元格,将其复制并粘贴到目标单元格中​​。

或者,将每个不同的单元格格式复制并粘贴到新工作表上的一种样式指南表中,然后仅使用它来复制和粘贴格式。

但最终,您需要将思维转向主题原则。自 Office 2007 以来,用户界面中不再有 56 种单独的颜色。取而代之的是同色系配色方案,其中有六种强调色。

如果您开始按照这些思路设计新的电子表格,从长远来看,您的生活将会变得更加轻松。

答案2

你可以尝试使用(或改编)这个John Walkenbach 发布的电子表格。此技术将在功能区上创建一个按钮并为您提供 Excel 2003 颜色调色板。

在此处输入图片描述

  1. 下载示例工作簿颜色选择器.xls
  2. 尝试标有单击此处更改所选单元格的背景颜色

    J-Walk 的 ColorPicker

  3. 将文件保存在某处。
  4. 右键单击功能区上的任意位置并选择自定义功能区
  5. 来自从中选择命令下拉菜单选择Macros然后选择...GetAColor2下面(屏幕截图中以黄色突出显示)。

    在此处输入图片描述

  6. 在右侧面板中,点击然后选择新集团. 右击新组(自定义)出现的选项并重命名2003 Colours并选择填充图标。

    在此处输入图片描述

  7. 最后点击添加 >>按钮位于中心。重命名新选项2003 Colours并再次选择填充图标。现在您应该能够在功能区中看到它。

    在此处输入图片描述

  8. 您可能希望将 VBA 从此文件移到您的个人工作簿中,这样您在单击按钮时就不会打开外部文件,或者可以使用键盘快捷键而不是功能区按钮。但作为一种快速启动和运行的方法,这种方法效果很好。

笔记 -有关调整 J-Walk 工作簿的更多信息,请点击此处。

答案3

这个解决方案在 Excel 2013 中对我有用,因此我将其发布在这里,以便将来遇到此问题并且不喜欢“你不能”答案的任何人使用。


如果您正在创建新文件:

创建一个新模板,Excel 每次创建新文件时都会使用该模板。

  1. 打开空白工作簿
  2. 根据需要进行自定义(所有未来新的工作簿都将是此工作簿的副本,因此请花一些时间来设置所需的字体设置、列宽等)
  3. 对于您想要保存的每种自定义颜色,请将一个单元格设置为该自定义颜色。(我只是A1反复使用)
  4. 将所有单元格重新设置为无填充
  5. 现在您已经有了想要在“最近的颜色”中显示的颜色,您可以保存模板。
  6. 将文件保存为“Book.xltx”,保存在 Excel 的启动文件夹中。对我来说,这是
    C:\users\{username}\AppData\Roaming\Microsoft\Excel\XLSTART\
  7. 关闭该文件,因为当模板仍处于打开状态时,它不允许你基于该模板打开新文件
  8. 打开一个新文件来查看是否有效

当我进行到第 8 步时,我的新文件具有如下所示的颜色选项:

颜色


如果您正在编辑旧文件:

使用 VBA 自动执行上述步骤 3。

  1. 将下面的 VBA 存储在您的个人宏工作簿
  2. 编辑ColorList变量为您需要的 RGB 值列表
  3. 如果需要,请根据您的具体设置编辑睡眠时间
  4. 将宏添加到功能区

(如果这些链接失效了,那么这些问题很常见,您应该能够通过您喜欢的网络搜索引擎找到大量帮助。)

 

'Declare Sleep() API
  #If VBA7 Then ' Excel 2010 or later
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
  #Else ' Excel 2007 or earlier
    Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)
  #End If

Sub LoadRecentColors()
'PURPOSE: Use A List Of RGB Codes To Load Colors Into Recent Colors Section of Color Palette
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault

Dim ColorList As Variant
Dim CurrentFill As Variant

'Array List of RGB Color Codes to Add To Recent Colors Section (Max 10)
  ColorList = Array("066,174,093", "184,055,038", "046,062,081", "056,160,133")

'Store ActiveCell's Fill Color (if applicable)
  If ActiveCell.Interior.ColorIndex <> xlNone Then CurrentFill = ActiveCell.Interior.Color

'Optimize Code
  Application.ScreenUpdating = False

'Loop Through List Of RGB Codes And Add To Recent Colors
  For x = LBound(ColorList) To UBound(ColorList)
    ActiveCell.Interior.Color = RGB(Left(ColorList(x), 3), Mid(ColorList(x), 5, 3), Right(ColorList(x), 3))
    DoEvents
    SendKeys "%h"
    Sleep 500 'Pause half-second (units in milliseconds)
    SendKeys "h"
    Sleep 500 'Pause half-second (units in milliseconds)
    SendKeys "m"
    Sleep 500 'Pause half-second (units in milliseconds)
    SendKeys "~"
    Sleep 500 'Pause half-second (units in milliseconds)
    DoEvents
  Next x

'Return ActiveCell Original Fill Color
  If CurrentFill = Empty Then
    ActiveCell.Interior.ColorIndex = xlNone
  Else
    ActiveCell.Interior.Color = currentColor
  End If

End Sub

VBA 的原始来源

相关内容