Countifs和范围

时间:2017-09-29 16:19:38

标签: excel if-statement range countif

我试图编写一些需要单元格值在一定范围内的代码。 这是我到目前为止所写的内容(尽管为简单起见改了几个名字):

=IF(COUNTIFS('[SheetA.xlsx]TabA'!A2:AA2, "submit", '[SheetA.xlsx]TabA'!B2:AB2, '[SheetA.xlsx]TabB'!**A9:A13**) >= 1, '[SheetA.xlsx]TabA'!C2, "")

基本上,如果一行中的单元格包含单词"则提交"并且它右边的单元格有一个日期(在五天的特定范围内),我希望函数返回该行的第三个单元格。

以粗体显示的范围是一系列日期。

当我使用范围时,此公式不起作用,但在输入单个日期时返回预期值。我应该改变什么?

1 个答案:

答案 0 :(得分:0)

至于COUNTIF()没有在范围内找到日期,如果范围是连续的,你可以像这样绕过它:

COUNTIFS(A2:AA2, "submit", B2:AB2,">=" & LowestDate,B2:AB2,"<=" & HighestDate)

问题在于您将范围与范围进行比较,因此整个范围必须与整个范围相匹配。这将始终返回false,因为范围甚至不是相同的形状。相反,当您将范围与单个值进行比较时,如果单个值存在于范围内的任何位置,则Excel会自动假定您需要为true。

听起来你的另一个问题是,由于COUNTIFS()没有返回发现“提交”和日期的地方,因此外部IF语句无法确定第三个单元格的位置。

如果只有一个提交,您可以使用Match("submit",2:2,0)+2找到“submit”add 2的相对列,然后使用ADDRESS()构建第三个单元格的地址基于行。最后你把它放在INDIRECT()里面以返回第三个单元格。类似的东西:

=INDIRECT(ADDRESS(ROW(A2),MATCH("submit",2:2,0)+2,1,1))

请注意,当您返回第一个值MATCH()时,这对多个匹配不起作用。

我使用ROW()因为如果您使用普通行号,当您将公式向下拖动时,ADDRESS()可能无法很好地填充行系列。