Excel公式获取单元格颜色

63

我想知道是否能够通过任何内联公式(而不使用任何宏)找出单元格的颜色。

我正在使用家庭用户办公软件包2010。


请参见http://www.excelforum.com/excel-general/744559-cell-function-detecting-color-format.html。 - lc.
3
请查看此链接,讨论如何在Excel中使用GET.CELL函数来获取单元格信息。然后转到此链接以查看GET.CELL的语法。 - L42
4个回答

72

如评论所述,以防我发布的链接失效,请尝试以下操作:

在 Excel 的“公式”选项卡下的“名称管理器”中添加一个名称(任何有效名称)。
然后使用 GET.CELL 函数分配一个公式。

=GET.CELL(63,INDIRECT("rc",FALSE))

63 代表背景颜色。
假设我们将其命名为Background,则在带有颜色类型的任何单元格中:

=Background

结果:
enter image description here

请注意,单元格 A2、A3 和 A4 分别返回 3、4 和 5,这等于单元格的背景颜色索引。HTH。
另外,这是Excel的颜色索引链接。


6
你应该将这个问题标记为重复,而不是回答它。 - user2140173
3
这个技术上是宏,如果你使用它,需要保存为启用宏的文件,除非它们有所更改。 - Gaijinhunter
@Issun 是的,从技术上讲。我想的是“没有宏”就是没有代码。但是没错,它是一个宏。 - L42
5
对我非常有效!要获得前一列的颜色,只需使用“rc[-1]”而不是“rc”。 - Tim Friesen
此外,对象的相同图案颜色为单元格颜色加上7。例如:绿色单元格的颜色编号为4,绿色对象的颜色编号为11。 - Sammy
相当令人印象深刻,即使只有一些有限的颜色。 - Kangqiao Zhao

47

颜色不是数据。

Get.cell技术存在缺陷。

  1. 它只有在单元格(或工作表)重新计算时才会更新,而不会在单元格颜色更改时立即更新。
  2. 在现代Excel中可用的数百万种颜色中,它没有足够的数字。请参见截图并注意黄色或紫色的不同强度都具有相同的数字。

enter image description here

这并不奇怪,因为Get.cell使用了旧的XML命令,即VBA引入之前Excel使用的宏语言Excel命令。当时,Excel颜色被限制在不到60种。

再次说明:颜色不是数据。

如果您想对单元格进行着色,请使用基于单元格值或基于可以用逻辑公式表达的规则的条件格式。导致条件格式的逻辑也可以在其他地方使用,以报告数据,而不考虑单元格的颜色值。


4
这是一个很好的回答,展示了使用像get.cell这样的旧宏的危险性。呈现得非常好! - Gaijinhunter
11
只要用户创建了原创内容,那么这个回答就很好。但对于那些只是想找到跨越数千行数据的方法的人来说,并不是很好,因为有些人(不幸的是)将填充颜色用作“数据”。 - Tim Friesen
1
如果您从一个空的彩色表格开始,我建议您按格式(基于填充颜色)搜索单元格,并将空单元格替换为每种颜色的不同数字。 - Felipe G. Nievinski
7
“颜色不是数据”,那么.. 人们是否通过给单元格着色来记录信息在电子表格中?是的,他们这样做。因此,颜色确实记录了数据,并且“是数据”,就像我们称之为“数字”的那些波浪形状一样。在Excel中,单元格颜色是否是可靠和符合公式的数据记录方式?不,它不是,但这是一个不同的问题。 - gwideman
1
颜色是元数据。人们需要理解,当他们使用颜色来区分单元格时。Excel 对于评估颜色的能力非常有限。即使是电子表格的人类读者也无法知道为什么一个单元格是蓝色的,而另一个单元格是绿色的。这需要一个图例、一个系统、一个参考框架。有了这个,它将成为可以分析的数据。 - teylyn

11

不,只有通过使用宏才能获得单元格内部颜色。很抱歉。这非常容易实现(cell.interior.color),所以除非您有限制使用VBA的要求,否则建议使用VBA。


8
OP说“不使用任何宏”,但是你的解决方案使用了一个宏。 - Gaijinhunter

2
预料到我已经知道答案,即没有内置的工作表函数可返回单元格的背景颜色,我决定再次查看本文,以防我错了。我很高兴地注意到引用了与我正在进行的 Microsoft Excel 颜色研究相同的 MVP 文章。
虽然我同意,在最纯粹的意义上,颜色不是数据,而是元数据,并且它有其用途。为此,我将尝试开发一个返回单元格颜色的函数。如果成功,我计划将其放入一个插件中,以便在任何工作簿中使用它,它将加入到我认为 Microsoft 产品中缺少的其他功能的越来越多的函数中。
无论如何,我认为 ColorIndex 属性几乎没有用处,因为颜色索引与标准前景和背景颜色选择器中可以选择的颜色之间基本上没有联系。请参见 Color Combinations: Working with Colors in Microsoft Office 和相关的二进制工作簿 Color_Combinations Workbook

3
请记住,Office 2007及其后续版本中的配色方案是“主题”配色方案。任何识别颜色的工作,以及基于当前单元格颜色的逻辑,都需要考虑到文件的主题可以更改为完全不同的配色方案。在一个主题中为蓝色的颜色,在另一个主题中可能是红色的。主题颜色是通过组合强调号和阴影号来设置的,而不是固定的RGB值。 - teylyn
感谢您明确说明并提醒我,如果我还没有意识到的话。我引用的文章都与那些重音数字和主题有关。无论如何,使用对象模型相对容易确定单元格的当前颜色。 - David A. Gray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接