基于另一个单元格值的条件格式
Posted
技术标签:
【中文标题】基于另一个单元格值的条件格式【英文标题】:Conditional formatting based on another cell's value 【发布时间】:2013-12-31 00:13:29 【问题描述】:我正在使用 Google 表格作为日常信息中心。我需要的是根据另一个单元格 - C5 的值更改单元格 B5 的背景颜色。如果 C5 大于 80%,则背景颜色为绿色,但如果低于 80%,则为琥珀色/红色。
这是否适用于 Google 表格功能,还是我需要插入脚本?
【问题讨论】:
在您迁移到新表格之前,请使用onEdit
触发器或 this answer 来调整来自 this answer 的脚本之一,后者不会。
【参考方案1】:
我只是想用另一种方式来解释它。在“自定义公式”条件格式中,您有两个重要字段:
自定义公式 申请假设您有一张简单的表格,其中包含学生的测试百分比,您想在其中为学生 ID(B 列)着色,其中他们的分数(C 列)> 80%:
Row | B(Student ID) | C(Score) |
---|---|---|
1 | 48189 | 98% |
2 | 9823 | 6% |
3 | 17570 | 40% |
4 | 60968 | 23% |
5 | 69936 | 7% |
6 | 8276 | 59% |
7 | 15682 | 96% |
8 | 95977 | 31% |
要设计自定义公式,您只需要为范围的左上角设计一个公式,您要着色。在这种情况下,就是B1
。
公式应该返回
TRUE
,如果它应该是彩色的和
FALSE
,如果它不应该被着色
对于 B1,公式为:
=C1>80%
现在假设您将该公式放在 B1 中(或者只是使用另一个范围来测试它)。就像:
Row | B | C |
---|---|---|
1 | TRUE | |
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 | ||
8 |
现在想象将公式(或自动填充)从B1
拖到B8
。这就是它的样子
Row | B | C |
---|---|---|
1 | TRUE | |
2 | FALSE | |
3 | FALSE | |
4 | FALSE | |
5 | FALSE | |
6 | FALSE | |
7 | TRUE | |
8 | FALSE |
这直接转化为颜色B1
和B7
。 现在有趣的是,所有这些都是使用B1
和Apply to
范围的给定公式自动计算的。 如果您填写:
=C1>80%
和
申请:B1:B8
你在说
填写自定义公式=C1>80%
在所提供范围B1:B8
的左上角单元格中,即B1
和
将公式拖动/自动填充到整个范围B1:B8
和
为单元格着色,公式输出TRUE
如果您想同时为学生证和分数着色,您可以使用
自定义公式:
=$C1>80%
适用于:
B1:C8
$C1
中的$
表示在自动填充范围时不要更改C
。在虚构的表格中(我建议您将表格输出到某处)。这看起来像:
Row | B | C |
---|---|---|
1 | TRUE | TRUE |
2 | FALSE | FALSE |
3 | FALSE | FALSE |
4 | FALSE | FALSE |
5 | FALSE | FALSE |
6 | FALSE | FALSE |
7 | TRUE | TRUE |
8 | FALSE | FALSE |
通过这种方式,您可以根据任何其他单元格为任何位置的任何单元格着色。
【讨论】:
【参考方案2】:基本上,您需要做的就是在列字母和行号处添加 $ 作为前缀。请看下图
【讨论】:
【参考方案3】:我对解决这个问题需要多长时间感到失望。
我想查看我范围内的哪些值超出标准偏差。
-
将标准差计算添加到某个单元格
=STDEV(L3:L32)*2
选择要突出显示的范围,右键,条件格式
选择如果大于则设置单元格格式
在值或公式框中输入=$L$32
(无论您的标准开发人员在哪个单元格中)
我不知道如何将 STDEv 内联。我尝试了很多事情,结果出乎意料。
【讨论】:
【参考方案4】:根据另一个单元格 - C5 的值更改单元格 B5 的背景颜色。如果 C5 大于 80%,则背景颜色为绿色,但如果低于 80%,则为琥珀色/红色。
没有提到 B5 包含任何值,因此假设 80%
是 .8
格式为不带小数的百分比和空白计数为“以下”:
选择 B5,使用标准填充颜色“琥珀色/红色”,然后选择格式 - 条件格式...,自定义公式为:
=C5>0.8
用绿色填充和完成。
【讨论】:
【参考方案5】:我在最近的一个文件中使用了一种有趣的条件格式,并认为它对其他人也有用。 所以这个答案是为了完整之前的答案。
它应该展示这个惊人的功能的能力,尤其是 $ 的工作原理。
示例表
从 D 到 G 的颜色取决于 A、B 和 C 列中的值。但公式需要检查水平固定的值(用户、开始、结束)和垂直固定的值(行中的日期1)。这就是美元符号有用的地方。
解决方案
表格中有 2 个用户,每个用户都有定义的颜色,分别为 foo(蓝色)和 bar(黄色)。
我们必须使用以下条件格式规则,并将它们应用到同一范围 (D2:G3
):
=AND($A2="foo", D$1>=$B2, D$1<=$C2)
=AND($A2="bar", D$1>=$B2, D$1<=$C2)
在英文中,条件表示:用户是name
,当前单元格的日期在start
之后和end
之前
请注意,这两个公式之间唯一的变化是用户名。这使得它非常容易与许多其他用户重用!
说明
重要:可变行和列相对于范围的开始。但固定值不受影响。
相对位置很容易混淆。在此示例中,如果我们使用范围 D1:G3
而不是 D2:G3
,则颜色格式将向上移动 1 行。
为避免这种情况,请记住变量行和列的值应对应于包含范围的开始。
在这个例子中,包含颜色的范围是D2:G3
,所以开始是D2
。
User
、start
和 end
因行而异
-> 固定 A B C 列,从 2 开始的可变行:$A2
、$B2
、$C2
Dates
因列而异
-> 从 D 开始的可变列,固定第 1 行:D$1
【讨论】:
这可能需要一个单独的帖子,但是是否可以将条件样式本身基于另一个单元格?例如如果您为您的“foo”和“bar”有一个单独的查找表,是否可以将条件格式配置为在您的规则中应用该单元格的 fg-color 和 bg-color?这是我经常需要的东西,一个行的“状态”指示器,其中颜色和状态选项很容易配置,无需手动重新编程条件格式规则。 您可以通过脚本来做到这一点。我认为我从未见过通过正常使用来选择特定颜色或现有格式的动态方法。编辑:要开始编写脚本,请转到工具 > 脚本编辑器并开始编码。但这是使用工作表的全新水平;-) 这是一种晚餐技巧,可以用它变魔术,谢谢!【参考方案6】:再举一个例子:
如果您有从 A 到 D 的列,并且如果 B 为“完成”,则需要突出显示整行(例如从 A 到 D),那么您可以执行以下操作:
"Custom formula is": =$B:$B="Completed"
Background Color: red
Range: A:D
当然,如果您有更多列,您可以将 Range 更改为 A:T。
如果 B 包含“完成”,则使用如下搜索:
"Custom formula is": =search("Completed",$B:$B)
Background Color: red
Range: A:D
【讨论】:
这似乎不起作用,除非您在“自定义公式是”字段中提供$
。即做$B$2:$B
而不是B2:B
只是为了添加到 lucky1928 的答案——如果您将 Range 从 A:D 更改为 A:T,您将添加更多列,而不是行/行。如果您只有有限数量的行希望条件格式起作用,那么指定一行可能会有所帮助,例如A2:D13 例如,如果您有标题行。否则,如果您匹配的是空白或不等于特定值的内容,您可能会为工作表中存在的所有行添加颜色,这可能不是您想要的。
请注意,公式开头的“=”非常重要【参考方案7】:
注意:当它在下面的解释中说“B5”时,它实际上表示“Bcurrent_row”,所以对于C5来说它是B5,对于C6来说它是B6等等。除非您指定 $B$5 - 否则您指的是一个特定的单元格。
自 2015 年起,Google 表格支持此功能: https://support.google.com/drive/answer/78413#formulas
在您的情况下,您需要在 B5 上设置条件格式。
使用“自定义公式是”选项并将其设置为=B5>0.8*C5
。
将“范围”选项设置为B5
。
设置所需的颜色
您可以重复此过程为背景或文本或色标添加更多颜色。
更好的是,通过使用“Range”中的范围将单个规则应用于所有行。假设第一行是标题的示例:
在 B2 条件格式中,将“自定义公式为”设置为=B2>0.8*C2
。
将“范围”选项设置为B2:B
。
设置所需的颜色
将与前面的示例类似,但适用于所有行,而不仅仅是第 5 行。 范围也可以在“自定义公式是”中使用,因此您可以根据列值为整行着色。
【讨论】:
感谢 Zig 让我知道。它很有用,但不能只使用它,除非我将旧电子表格版本的内容复制到新的。谢谢朋友 为了加快速度,我建议迁移到新工作表,但请稍等一下,因为它处于早期测试阶段,有些东西还没有完全支持。 我想通了,你需要使用绝对引用。例如,论坛中的“=B5:B10=C$5”,范围中的B5:B10。 引用另一个工作表上的单元格:=B2>0.8*indirect("Sheet1!C2")
(source)
@Zig Mandel 工作正常,除了格式化为货币的单元格,我只是试图隐藏(前/背景白色)单元格范围,其中一些是货币。知道怎么做吗?干杯以上是关于基于另一个单元格值的条件格式的主要内容,如果未能解决你的问题,请参考以下文章
请问在VBA中.FormatConditions .Add Type:=xltinmeperiod,dateoperator:=xltoday这个编辑错在哪里?