我正在尝试在工作表上进行条件格式设置。 我需要根据以下条件语句用某种颜色填充单元格:

=AND((INDIRECT(ADDRESS(4;COLUMN()))>=INDIRECT(ADDRESS(ROW();4)));(INDIRECT(ADDRESS(4;COLUMN()))<=INDIRECT(ADDRESS(ROW();5))))

当我分别尝试使用AND()函数中的语句时,它们似乎起作用,但是当我将它们放到函数中时,看不到任何格式发生。

这里是一些背景:“当前列”的第4行中有一个日期(DATE1)。 在“当前行”的D和E列上还有日期(DATE2和DATE3)。 因此,如果DATE1在DATE2和DATE3之间,我想用一种颜色填充单元格。

我看不到为什么该公式不起作用。 任何帮助深表感谢。

更新(2011年12月13日):

我实现了一个需要从该单元调用的功能。 该函数返回整数值。 然后,条件格式仅使用单元格中的整数。 这样,条件格式化就不那么复杂了。 我将INDIRECT(ADDRESS(ROW(); COLUMN()))传递到实现的函数中。 因此,在处理相对和/或绝对单元格时,我可以获得所需的所有信息。 知道一种将当前单元格作为范围传递给函数的更简单方法将非常高兴。

注意:ActiveCell似乎不适用于我。 它使用功能运行时选择的单元格中的数据。 那不是我要找的东西。 我当然可以通过单元本身(例如在A4,B7等中),但是我不确定它在性能方面是否真的很重要。

感谢所有回答我的问题的人。

===============>>#1 票数:33 已采纳

我在使用AND()破坏条件格式时遇到了同样的问题。 我只是碰巧尝试将AND视为乘法,并且它有效! 删除AND()函数,然后乘以您的参数。 Excel将布尔值视为1表示true,0表示false。 我刚刚测试了这个公式,它似乎有效。

=(INDIRECT(ADDRESS(4,COLUMN()))>=INDIRECT(ADDRESS(ROW(),4)))*(INDIRECT(ADDRESS(4,COLUMN()))<=INDIRECT(ADDRESS(ROW(),5)))

===============>>#2 票数:4

您可以使用更简单的公式。 我刚刚创建了一个新的工作簿进行测试。

Column A = Date1 | Column B = Date2 | Column C = Date3

突出显示列A并输入条件格式公式:

=AND(A1>B1,A1<C1)

===============>>#3 票数:1

使用较简单的公式时,我遇到了类似的问题:

= If (x > A & x <= B) 

并发现我可以删除AND并使用+将两个比较项加入

  = (x > A1) + (x <= B1)        [without all the spaces]

希望这有助于其他人进行比较简单的比较。

===============>>#4 票数:0

我目前负责具有许多旧代码的Excel应用程序。 该代码最慢的部分之一是循环遍历6列的500行,并为每行设置条件格式公式。 公式用于标识单元格内容是非空白但不构成命名范围的一部分,因此两次引用单元格本身,最初写为:

=AND(COUNTIF(<rangename>,<cellref>)=0,<cellref><>"")

显然,通过立即更新每个列(范围)中的所有像元将大大减少开销。 但是,如上所述,使用ADDRESS(ROW(),COLUMN(),n)在这种情况下不起作用,即,这不起作用:

=AND(COUNTIF(<rangename>,ADDRESS(ROW(),COLUMN(),1))=0,ADDRESS(ROW(),COLUMN(),1)<>"")

我使用空白工作簿进行了广泛的实验,使用各种替代方法(例如ISBLANK)无法解决此问题。 最后,为了解决这个问题,我创建了两个用户定义的函数(使用在此站点上其他地方找到的技巧):

Public Function returnCellContent() As Variant

  returnCellContent = Application.Caller.Value

End Function

Public Function Cell_HasContent() As Boolean

  If Application.Caller.Value = "" Then
    Cell_HasContent = False
  Else
    Cell_HasContent = True
  End If

End Function

现在的条件公式为:

=AND(COUNTIF(<rangename>,returnCellContent()=0,Cell_HasContent())

效果很好。

在Excel 2010中,这使代码从5s加速到1s。 由于只要将数据加载到应用程序中就会运行此代码,因此这种节省是重要的,对用户而言很明显。 它也更加干净和可重复使用。

我花了一些时间来发布此内容,因为我无法在该网站或其他任何地方找到涵盖所有情况的答案,同时我确信还有其他人可以从上述方法中受益,而潜在的受益者可能更多单元格进行更新。

===============>>#5 票数:0

与其他报告的问题相同-使用Excel2016。发现对应用条件公式时; AND,将条件相乘并添加条件失败。 不得不自己创建TRUE / FALSE逻辑:

=IF($C2="SomeText",0,1)+IF(INT($D2)>1000,0,1)=0

===============>>#6 票数:0

这可能是由于column()和row()函数所致。 我不确定如何在条件格式中应用它们。 尝试使用此公式中的值创建一个新列,然后将其用于格式设置需求。

===============>>#7 票数:0

COLUMN()ROW()无法以这种方式工作,因为它们被应用于调用它们的单元格。 在条件格式中,您将必须是显式的而不是隐式的

例如,如果要在以单元格A1开头的范围上使用这种条件格式,则可以尝试:

`COLUMN(A1)` and `ROW(A1)`

Excel将自动使条件格式适应当前单元格。

  ask by some user translate from so

未解决问题?本站智能推荐: