Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel公式从条件语句为真的范围返回值_Excel_Conditional - Fatal编程技术网

Excel公式从条件语句为真的范围返回值

Excel公式从条件语句为真的范围返回值,excel,conditional,Excel,Conditional,我已经为此寻找了一段时间的答案,但没有任何运气。这有点难以用语言表达,所以如果有什么不清楚的地方请告诉我 我想要的是一种在两列上执行条件语句的方法。当这两个条件都为true时,我希望从第三列返回值,该列与满足这些条件的行位于同一行。如果D5和C5中的条件为真,我想用公式将Q5中的值返回到单元格中。条件语句很简单,但我还没有弄清楚最后一步 如果我使用下面的公式,我在单元格中得到1,这是正确的 =IF(AND('Stata Output'!D2:D6='Backcheck schedule and

我已经为此寻找了一段时间的答案,但没有任何运气。这有点难以用语言表达,所以如果有什么不清楚的地方请告诉我

我想要的是一种在两列上执行条件语句的方法。当这两个条件都为true时,我希望从第三列返回值,该列与满足这些条件的行位于同一行。如果D5和C5中的条件为真,我想用公式将Q5中的值返回到单元格中。条件语句很简单,但我还没有弄清楚最后一步

如果我使用下面的公式,我在单元格中得到1,这是正确的

=IF(AND('Stata Output'!D2:D6='Backcheck schedule and results'!C2, 'Stata Output'!C2:C6=1),1,0)
但是,将公式中的1替换为要从中提取值的单元格范围,每次都会得到一个零,我知道这是错误的。对于后一个公式,我使用:

=IF(AND('Stata Output'!D2:D6='Backcheck schedule and results'!C2, 'Stata Output'!C2:C6=1),'Stata Output'!Q2:Q5,0)
你知道我把事情搞砸了吗?
谢谢

试试下面的公式:

=LOOKUP(2,1/('Stata Output'!D2:D6='Backcheck schedule and results'!C2)/('Stata Output'!C2:C6=1),'Stata Output'!Q2:Q5)

如果有多行同时满足这两个条件,则此公式将返回其中最后一行的col
Q
值。

试一试-我确信有一种更简单的方法,但似乎可以完成任务(确保使用
Control+Shift+enter作为数组公式输入)

这样做的目的是将整个表作为范围(第一个参数是
INDEX
,然后使用
MATCH
查找满足这两个条件的行(在这种情况下,列
C
必须是
1
,列
D
中的对应值必须是
回溯检查计划和结果
)。然后在结果数组中搜索1(表示匹配),并返回列
14
(表示表中的列
Q
)。您可以根据需要继续在
match()
函数中添加筛选器


请注意,这将只匹配第一个“命中”。

看起来像是
,并且在数组公式中无法正常工作,因此我将使用以下方法:

=IF(('Stata Output'!D2:D6='Backcheck schedule and results'!C2)*('Stata Output'!C2:C6=1)=1,'Stata Output'!Q2:Q5,0)
这将为您提供一个新的结果列,该列将从每个匹配行的
Q2:Q6
列中填充

要使用它,您应该选择所有结果列,输入公式,然后使用
CTRL+SHIFT+ENTER


只需确保使用相同大小的范围。

是的,关于AND,您是正确的,AND的结果是一个结果而不是一个数组……但是您的修订版本的问题是它会生成一个“数组”,例如,如果第3行匹配,但其他行不匹配,那么您将得到{0;text;0;0}其中text是Q3中的值……因此您需要一些其他函数来从数组中提取该值(请参见我的答案和RocketDonkey的)-如果在单个单元格中输入,您通常只会看到该数组中的第一个值(0)但是,这可能会随着你输入公式的位置而改变!@barryhoudini,是的,它给出了一个结果数组,这个公式应该应用于一系列单元格。我想我对这个问题的理解是不同的,他希望得到所有匹配行的结果,而不仅仅是其中一行。
=IF(('Stata Output'!D2:D6='Backcheck schedule and results'!C2)*('Stata Output'!C2:C6=1)=1,'Stata Output'!Q2:Q5,0)