格式化单元格列,如果匹配公式,则相邻单元格为空

时间:2017-07-21 11:08:31

标签: excel excel-vba excel-formula conditional-formatting vba

如果单元格符合公式且相邻行是空白的,我是否可以有条件地格式化单元格?

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

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

=NOW()-30(如果细胞长达30天或以上,请填写)

这很好,但是,我想在它旁边输入另一个条件,因此格式化仅适用于同一行中P列中的单元格为空白。

所以我希望它看起来像这样,但它似乎不起作用;

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

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

如果使用公式进行条件格式设置,则如果公式结果为true,则格式化单元格。

这里的问题是=NOW()-30会产生类似2017-06-21 13:31 的内容,如果将其转换为布尔值,则始终 true

因此,如果您希望仅在其日期超过30天时格式化单元格,则需要检查该单元格。例如。对于单元格B1使用:=(B1<=NOW()-30)

或者像=AND(ISBLANK($P1), ($B1<=NOW()-30))这样的单元格B1,然后将格式复制到其他单元格中。

答案 1 :(得分:0)

我建议制作一个VBA宏(在我看来更简单,更清晰)。只需进行for循环,然后使用cell.value遍历整个列以比较值或cell.formula以获取公式。 通过这种方式,您还可以通过在variant表中复制值来加快速度,这样您就可以在最少的时间内完成所有操作(非常适合处理大型数据库)。 对于具有双重条件的条件格式化,它会给出类似的结果:

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

答案 2 :(得分:0)

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

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

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