基于来自单独 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" 的行中:
- 在第 2 列 ("Min OG") 我的值为
1.040
- 在第 3 列 ("Max OG") 我的值为
1.052
想要的结果
我需要做:
- 从 1.040 到 1.052 100% 的范围和颜色代码为绿色,
- 例如,如果
sheet1!B2
中的值最多超出此范围 10%,则颜色编码为黄色,
- 超过 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 个巨大的数组公式就可以做到这一点,而无需做额外的列,但很难构建一个。
我正在制作一份电子表格日记:
- 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" 的行中:
- 在第 2 列 ("Min OG") 我的值为
1.040
- 在第 3 列 ("Max OG") 我的值为
1.052
想要的结果
我需要做:
- 从 1.040 到 1.052 100% 的范围和颜色代码为绿色,
- 例如,如果
sheet1!B2
中的值最多超出此范围 10%,则颜色编码为黄色, - 超过 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 个巨大的数组公式就可以做到这一点,而无需做额外的列,但很难构建一个。