在列中格式化单元格,如果匹配公式,并且相邻单元格为空白

如果条件匹配一个公式并且它们相邻的行是空的,是否可以有条件地格式化单元格?

我的表格如下。 B列以date格式保存单元格,P列也包含date格式。

我有条件地格式化B列中的单元格,只要它们符合以下公式;

=NOW()-30 (如果他们是30天或更长的时间,填入细胞)

这工作正常,但是,我想input另一个条件,所以格式只适用于同一行中列P中的单元格是空白的。

所以我希望看起来像这样,但似乎并不奏效。

 =AND((ISBLANK($P)),((NOW()-30))) 

感谢您的帮助提前。

如果您使用公式进行条件格式化,那么如果公式结果为true则单元格将被格式化。

这里的问题是=NOW()-30结果如2017-06-21 13:31如果转换为布尔值,则始终为 true

所以如果你想格式化一个单元格,只有当它的date早于30天,那么你需要检查该单元格。 例如。 对于单元格B1使用: =(B1<=NOW()-30)

或者相应地为单元格B1提供=AND(ISBLANK($P1), ($B1<=NOW()-30)) ,然后将格式复制到其他单元格中。

我会build议做一个VBAmacros(在我看来,更简单和更清晰)。 只要做一个for循环,并使用cell.value遍历整个列比较值或cell.formula获得公式。 通过这种方式,您也可以通过在variant表中复制值来加快速度,从而以最less的时间损失(很适合处理大型数据库)执行所有操作。 至于有双重条件的有条件合并,它会给出这样的东西:

 if(range(cells(2,1), cells(2,bottomrow)).formula = "formulahere" AND range(cells(16,1), cells(16,bottomrow)).value = "") Then '--your actions-- end if 

你的代码中缺less的就是行号!

假设您的条件格式从第一行开始:

 =AND(NOT(ISBLANK($P1)),($B1 <= (NOW()-30))) 

$字符将确保列(或行)保持不变,而不pipe执行条件格式的单元格。

通过在行号之前不包括$ ,条件格式将会为每一行dynamic地改变。

我设法通过在条件格式化窗口中将以下公式应用于列B来使其工作。

 =($B1<=NOW()-365)*($P1="") 

此公式仅在确认date后格式化单元格,单元格B1 …大于365天,列P中的相邻单元格为空白。 因此满足我所需的参数。