【问题标题】:Conditional Formatting Based On Multiple Columns基于多列的条件格式
【发布时间】:2020-10-21 16:02:40
【问题描述】:

表 1

[

表 2 [

在工作表 1 上,我有四列 Col A= 1st adjust、Col B= 1st Check、Col C= 2nd Adjustment、Col D= 2nd Check。

这些列中的值为 0 或非 0。始终为数字。对于两个调整列,我将它们格式化为红色(如果它们非零),对于两个检查列,我将它们格式化为黄色(如果它们非零)。

在表 2 上有一个列,它提取并组合调整和检查集,并将它们分配给正确的员工 ID #。

如果数字来自另一页上的调整列,我需要以某种方式将工作表 2 中列的格式设置为红色,如果数字来自另一页上的检查列,则设置为黄色。如果等于 0 则没有颜色。

最好的方法是什么?我一直没能找到解决办法。

我拥有的条件格式规则都适用于C列Sheet 2。它们是:

#1- 单元格值等于 = 0(无填充)

#2 单元格值等于 =Sheet1!$E1(黄色填充)

#3 单元格值等于 =Sheet1!$C1(黄色填充)

#4 单元格值等于 =Sheet1!$D1(红色填充)

#5 单元格值等于 =Sheet1!$B1(红色填充)

【问题讨论】:

  • 我想说您可以添加另一列,其中包含确定数据来源的公式;然后您可以通过具有相对引用的公式应用条件格式。您需要多种条件格式,因为您需要 3 个结果。
  • 图片已添加。表 2 上的列有一个公式来确定数据的来源,对吗?我尝试添加多个条件格式,但它从未从第二列调整和检查中获取格式。它会正确地为第一个调整和检查列着色,但将其他列留空

标签: excel


【解决方案1】:

假设两个列表都从 A1 开始,把这个公式放在 Sheet2 的单元格 D2 中:

=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))

然后选择范围 C2:C13 并打开条件格式菜单。根据公式添加 3 条新规则。第一个公式是:

=D2=1

并将格式设置为红色填充。第二个公式是:

=D2=2

并将格式设置为黄色填充。第三个公式是:

=D2=0

并将格式设置为未填充(这与未选择格式不同)。如果没有人要手动更改范围的格式,则最后一条规则不是绝对必要的。还是……

请注意,条件格式的每个公式都是在没有任何会锁定引用的 $ 的情况下编写的。因此,$C$2:$C$13 范围内的每个单元格都会将该公式相对于它自己的位置进行转换。单元格 C2 将“查看”单元格 D2,单元格 C3 将查看单元格 D3,C4 将查看 D4,依此类推。您当然可以隐藏 D 列,条件格式仍然有效。

您也可以在不使用额外列的情况下完成此操作。只需相应地编辑适用于单元格 D2 的公式并在您的规则中使用它。像这样的东西应该可以工作:

=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))=1
=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))=2
=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))=0

公式详情(在 cmets 中询问)

B2 代表行。在 INDEX 函数的上下文中,它表示 INDEX 函数必须“查看”范围的哪一行(我们在这里看到的公式中的$B$2:$E$7)。如果 B2 为 1,它将考虑范围的第一行(在我们的例子中为第 2 行)。如果是 2,它将考虑第二行(在我们的例子中是第 3 行)。

(A2-1)*2+1 代表列。在 INDEX 函数的上下文中,它表示 INDEX 函数必须“查看”范围的哪一列(我们在这里看到的公式中的$B$2:$E$7)。如果结果为 1,它将考虑范围的第一列(在我们的例子中是 B 列)。如果是 2,它将考虑第二列(在我们的例子中是 C 列)。

关于(A2-1)*2+1:让我们稍微改变一下,以便在我解释它时更容易可视化:

1+(A2-1)*2

我们可以将公式分为两部分:1 作为我们的起点(第一列)和(A2-1)*2+1,它根据周的变化处理列的变化。在单元格 A2 中,我们找到周数。在第一张表中,我们每周有 2 列。因此,当周移动 1 时,我们的目标列将不得不移动 2。我们不能只将周表乘以 2,因为从第一周开始的移动计为 2,而不是实际值。在第一周,我们将没有轮班。因此,我们的班次必须为 0;但我们不能只使用 0,因为范围内没有“零列”。因此,我们需要将起始值 1 与移位相加。这样第一周我们将有:

1+(1-1)*2

1+(0)*2

1+0

1

$B$2:$E$7 范围的第一列(即 B 列)。第二周我们将有:

1+(2-1)*2

1+(1)*2

1+2

3

$B$2:$E$7 范围的第三列(即 D 列)。

整个公式IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2) 基本上检查 C2 中的值是否与给定周的第一列相同。如果它是相同的值,则返回 1,否则返回 2(基本上假设该值将等于给定周的第二列中的值)。

报告您遇到的任何问题或错误。如果根据您的判断,此答案(或任何其他答案)是您问题的最佳解决方案,您有权接受它(link)。

【讨论】:

  • 这非常有用,我得到了它的工作。不过,快速提问,我提供的数据是样本数据,在我的真实报告中,C 列(表 2)的范围每周都不同。我试图将没有额外列的公式应用到 Col C 的全部范围(表 2),它也突出显示了它需要的上方的一个单元格。我需要对公式进行哪些调整以使其命中正确的单元格?
  • 问题应该出在公式中C2、B2、A2的2处。由于您已将其应用于整个列,因此它开始应用单元格 C1 中的公式。但该公式适用于单元格 C2。尝试将其更改为 C1、B1 和 A1。
  • 明白了。您能解释一下指数公式中 B2 的用途吗?还有 (A2-1)*2+1) 部分?我正在尝试利用您在我的真实数据表上的内容,因为它在测试表中完美运行,但我正在努力适应,因为我不完全理解那些在索引公式中的作用。
  • 当然可以。我只是补充一下答案。
【解决方案2】:

让我给你一个基于公式的条件格式的通用方法:

首先,您尝试设置您在某个单元格中输入的公式。如果您希望应用格式,公式的结果应该是 TRUE,在所有其他情况下应该是 FALSE

请再次编辑您的问题,显示您尝试配置此问题的公式。

哦,您只想复制第一张纸的格式。但是告诉我,第一张纸的格式是如何确定的?它也是条件格式的结果吗?关于ADJ/Check 列的数字,这只是第一张表中值的总和吗?

【讨论】:

  • 是的,第一个工作表条件格式是如果它是 0,则 ADJ 为红色,Check 列为黄色。在表 2 上,它会告诉它是第 1 周还是第 2 周,然后如果该周有支票、adj 或什么都没有 (0) 则提取值(同一个人不能同时有支票和 adj星期)。如屏幕截图 #2 所示,我可以获得条件格式以遵循正确的规则,但仅限于 #1 周。无论出于何种原因,格式都会忽略第 2 周。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多