我在工作表上尝试条件格式化。我需要根据以下条件语句填充具有特定颜色的单元格:
=AND((INDIRECT(ADDRESS(4;COLUMN()))>=INDIRECT(ADDRESS(ROW();4)));(INDIRECT(ADDRESS(4;COLUMN()))<=INDIRECT(ADDRESS(ROW();5))))
当我单独尝试AND()函数中的语句时,它们似乎有效,但当我将它们放在函数中时,我看不到任何格式化。
以下是一些背景知识: &#34;当前列的第4行&#34;有一个日期(DATE1)。 &#34;当前行&#34;的D和E列上也有日期。 (DATE2和DATE3)。所以,如果DATE1在DATE2和DATE3之间,我想用一种颜色填充单元格。
我不明白为什么公式不起作用。非常感谢任何帮助。
更新(2011年12月13日):
我实现了一个函数,我从需要此功能的单元格调用。该函数返回整数值。然后条件格式仅使用单元格中的整数。这样,条件格式化就不那么复杂了。我将INDIRECT(ADDRESS(ROW(); COLUMN()))传递给我实现的函数。因此,在处理相对和/或绝对单元格时,我拥有所需的所有信息。很高兴知道一种更简单的方法将当前单元作为范围传递给函数。
注意:ActiveCell似乎不适合我。它使用在运行函数时选择的单元格数据。那不是我想要的。我当然可以通过电池本身(如A4,B7等),但我不确定它在性能方面是否真的重要。
感谢所有回答我问题的人。
答案 0 :(得分:32)
我遇到了与AND()打破条件格式相同的问题。我碰巧尝试将AND作为乘法处理,它可以工作!删除AND()函数,只需乘以你的参数。 Excel会将布尔值视为1表示true,0表示false表示。我刚测试了这个公式,它似乎有效。
=(INDIRECT(ADDRESS(4,COLUMN()))>=INDIRECT(ADDRESS(ROW(),4)))*(INDIRECT(ADDRESS(4,COLUMN()))<=INDIRECT(ADDRESS(ROW(),5)))
答案 1 :(得分:4)
您可以使用更简单的公式。我刚刚创建了一个新工作簿来测试它。
Column A = Date1 | Column B = Date2 | Column C = Date3
突出显示A列并输入条件格式公式:
=AND(A1>B1,A1<C1)
答案 2 :(得分:1)
我有一个类似的问题,一个不太复杂的公式:
= If (x > A & x <= B)
并发现我可以移除AND
并加入与+
= (x > A1) + (x <= B1) [without all the spaces]
希望这可以帮助其他人进行不那么复杂的比较。
答案 3 :(得分:0)
这可能是因为column()和row()函数。我不确定它们是如何在条件格式中应用的。尝试使用此公式中的值创建新列,然后将其用于格式化需求。
答案 4 :(得分:0)
COLUMN()
和ROW()
不会以这种方式工作,因为它们会应用于调用它们的单元格。在条件格式设置中,您必须显式而不是隐式。
例如,如果要在单元格A1
上开始的范围内使用此条件格式,可以尝试:
`COLUMN(A1)` and `ROW(A1)`
Excel将自动调整条件格式化到当前单元格。
答案 5 :(得分: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。因为只要将数据加载到应用程序中,就会运行此代码,因此这种保存非常重要且对用户来说很明显。它也更清洁,可重复使用。
我已花时间发布此消息,因为我无法在本网站或其他地方找到任何涵盖所有情况的答案,同时我确信还有其他人可以从中受益方法,可能需要更多的细胞来更新。
答案 6 :(得分:0)
与其他报告相同的问题 - 使用Excel 2016.发现在对表格时应用条件公式时; AND,将条件相乘,并添加条件失败。不得不自己创建TRUE / FALSE逻辑:
=IF($C2="SomeText",0,1)+IF(INT($D2)>1000,0,1)=0