我试图编写一些需要单元格值在一定范围内的代码。 这是我到目前为止所写的内容(尽管为简单起见改了几个名字):
=IF(COUNTIFS('[SheetA.xlsx]TabA'!A2:AA2, "submit", '[SheetA.xlsx]TabA'!B2:AB2, '[SheetA.xlsx]TabB'!**A9:A13**) >= 1, '[SheetA.xlsx]TabA'!C2, "")
基本上,如果一行中的单元格包含单词"则提交"并且它右边的单元格有一个日期(在五天的特定范围内),我希望函数返回该行的第三个单元格。
以粗体显示的范围是一系列日期。
当我使用范围时,此公式不起作用,但在输入单个日期时返回预期值。我应该改变什么?
答案 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()
可能无法很好地填充行系列。