基于来自单独 sheet 的数据验证的单独列中的值的条件格式

Conditional Formatting based on values in a separate column based on Data Validation from a separate sheet

我正在制作一份电子表格日记:
- sheet1
上的主要条目 - sheet2

上的静态名称和数据列表

在 sheet1 中,我根据 sheet2 中的名称通过数据验证输入值。后来我在 sheet1 中添加了一个值。该值需要与 sheet2 中列出的最小值和最大值进行比较,然后根据与 sheet2 中值的百分比偏差通过条件格式进行颜色编码。例如:

在 sheet1 中我有数据:

     A                          B
1    value                      OG 
2    British Brown Ale          1.045 

British Brown Ale 通过从数据验证列表填充的下拉列表输入。在 B2 中,"OG" 的值为 1.045

在 sheet2 中,数据如下所示:

     A                          B          C
1    value                      min OG     max OG 
2    British Brown Ale          1.040      1.052 

在 "British Brown Ale" 的行中:

想要的结果

我需要做:

  1. 从 1.040 到 1.052 100% 的范围和颜色代码为绿色,
  2. 例如,如果 sheet1!B2 中的值最多超出此范围 10%,则颜色编码为黄色,
  3. 超过 10% 的颜色编码为红色。

如何使用可以像上面那样比较值的条件格式?

我需要脚本来实现吗?

只用公式是可能的。最好的方法是只使用 ArrayFormula 以使所有公式自动扩展。

Sheet2

添加两列:"min - 10%" 和 "max + 10%"

在单元格 D2 中:

=ArrayFormula(OFFSET(B2,,,COUNTA(A2:A))/1.1)

在单元格 E2 中:

=ArrayFormula(OFFSET(C2,,,COUNTA(A2:A))*1.1)

结果:

工作表 1

4个公式得到"min"、"max"、"min-10%"、"max+10%"

在单元格 C2 中:

=ArrayFormula(VLOOKUP(OFFSET(A2,,,COUNTA(A2:A)),sheet1!A:E,2,0))

在单元格 D2 中:

=ArrayFormula(VLOOKUP(OFFSET(A2,,,COUNTA(A2:A)),sheet1!A:E,3,0))

在单元格 E2 中:

=ArrayFormula(VLOOKUP(OFFSET(A2,,,COUNTA(A2:A)),sheet1!A:E,4,0))

在单元格 F2 中:

=ArrayFormula(VLOOKUP(OFFSET(A2,,,COUNTA(A2:A)),sheet1!A:E,5,0))

还有一个公式有颜色:

=ArrayFormula(if(--(OFFSET(B2,,,COUNTA(A2:A))<OFFSET(E2,,,COUNTA(A2:A)))+B2>F2,"red",if((OFFSET(B2,,,COUNTA(A2:A))>=OFFSET(C2,,,COUNTA(A2:A)))*(+OFFSET(B2,,,COUNTA(A2:A))<=OFFSET(D2,,,COUNTA(A2:A))),"green","yellow")))

结果:

Sheet1 的条件格式规则

Select B列,新增3条条件格式(CF)规则,自定义公式:

首先,涂绿色:

=$G1="green"

下一步,涂黄色:

=$G1="yellow"

下一步,涂红色:

=$G1="red"

然后你可以隐藏额外的列。

结果:


我认为,在 CF 中仅使用 3 个巨大的数组公式就可以做到这一点,而无需做额外的列,但很难构建一个。