【问题标题】:Conditional formatting 1 cell based on cell input on another sheet, apply to entire row根据另一张纸上的单元格输入条件格式化 1 个单元格,应用于整行
【发布时间】:2019-03-11 09:45:27
【问题描述】:

为了工作,我需要创建一个资源管理 excel 文件。我的目标是创建一个如下所示的概览:

如果约翰要请几个小时的假,或者如果他有几个小时的病假,我想把这个单元格转成颜色,这样我就知道约翰会缺席在这一天无论出于何种原因。

但是,由于我要为一整行(一整年)创建这个,我不想为每个单元格创建条件格式,因为那太疯狂了。

这是每个员工的示例(在此示例中为 John):

enter image description here

所以我需要一个公式来检查员工工作表上一行中的单元格(例如病假)是否大于 0,然后更改仅上相应单元格的颜色追索计划工作表,不是整行。

你们中有人知道这在 excel 2016 中是否可行吗?最好不要使用 VBA 脚本,因为我必须将此 excel 文件传输给不从事 VBA 编程的同事。

提前致谢。

Nuntius transfertenus!

【问题讨论】:

  • 见here
  • 这会改变颜色或整行。我希望它查看 John 工作表中的整行并更改追索计划中的相应单元格。因此,如果 John!C4>0 将 Recourse planning!C4 更改为蓝色。但我需要该公式对 John 工作表上的整个第 4、5、6 和 7 行执行此操作,并将其仅应用于资源规划工作表中的第 4 行。
  • 你可以使用COUNTIFS来计算某件事连续发生了多少次
  • 我想我不明白你在做什么。 COUNTIFS 对我有什么帮助?可以举个例子吗?
  • 抱歉,我以为您实际上是在寻找复杂的东西。 this 是你要找的吗?

标签: conditional-formatting excel-2016


【解决方案1】:

这在没有任何代码的情况下绝对是可能的。使用 CountIf() 作为 tinus087 评论。棘手的部分是如何创建CountIf() 使用的地址范围,以便您可以在所有单元格上放置一种条件格式。一方面,您需要检查单元格的列以匹配总单元格的列。另一方面,工作表选项卡名称需要根据您所在的行进行更改。所以使用INDIRECT() 指向正确的工作表,使用OFFSET() 查看正确的单元格。

因此,对于单元格 C4,您要用作CountIf() 范围的公式是OFFSET(INDIRECT($A4&"!A1"),3,COLUMN(C1)-1,4)。当应用于单元格 C4 时,这将创建地址 John!C4:C7。用于单元格 D4 时,结果为 John!D4:D7。

当公式应用于没有名字的行或列出的名称与任何工作表选项卡都不匹配时,您可能需要一些错误检查来处理 #REF! 错误。

还有什么要考虑的,如果您还没有考虑过,如果有两个 John's,会发生什么?第二个约翰会被命名为 John2 吗?

【讨论】:

  • 感谢您的回答。我将开始研究它。记录在案:@reportgunner 是建议 COUNTIFS 声明的人。 :)
  • 差不多了,我稍微更改了代码,因为我想检查行而不是列。我还必须将, 更改为; 才能使其正常工作。不知道是什么原因造成的。感谢INDIRECT 的声明,太棒了。当我们有两个约翰时该怎么办......我不知道其中的一个? ;) 我现在有:=COUNTIF(OFFSET(INDIRECT($A4&"!A1");3;COLUMN(C1)-1;;7);">0") 但是如果我在周五在 John 工作表上添加任何整数,它会从周一到周五更改资源计划表上的颜色。是否有任何插件可以过滤掉不应受到影响的单元格?提前致谢!
  • 我再次更改了代码以包含名字和姓氏,如下所示:=COUNTIF(OFFSET(INDIRECT($A4&"_"&$B4&"!A1");3;COLUMN(C1)-1;;7);">0")。我将工作表名称更改为 John_Smith。现在两个同名的人的可能性会更小。不过仍在处理着色问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
相关资源
最近更新 更多