IF和声明优秀

我有一个公式,我正在工作,应该从另一个电子表格中提取数据。 我有一半的工作公式,但需要另一半真正把它们结合在一起。 我需要做的是在同一行中的两个单元格之间寻找匹配,然后提供正确的值。

例如,如果(A36 =(电子表格列C中的某个值)&& A3 =(列I中电子表格中的某个值))=在O中提供相应的单元格。

这是迄今为止的公式:

=IFERROR(AND(VLOOKUP($A$36,[ime.xls]Sheet1!C:O,13,0)/100,VLOOKUP($A3,[ime.xls]Sheet1!I:O,7,0)/100),"") 

当我删除if语句的第二部分寻找A3匹配时,它是有效的,但是这对于我的公式是至关重要的,否则我的值将是错误的。 表单[ime]包含我正在寻找匹配的值。任何人都可以让我知道我做错了什么吗? 为了这项工作必须满足这两个条件。

这是我正在尝试完成的一个示例。

样品

你的公式不是告诉它该做什么。 AND公式返回一个布尔值(true或false),所以你需要把它和一个IF公式结合起来,根据公式的结果做一件事情或者另一件事情。

例如:

=IF(AND(1=1,2=2),"Both conditions were true","One or more conditions were false")将返回两个条件都是成立的。

=IF(AND(1=100,2=2),"Both conditions were true","One or more conditions were false")将返回一个或多个条件是错误的,因为1不等于100。

现在你需要把这个应用到你想要做的事情上。 像这样的东西:

 =IF( AND( $A$36=VLOOKUP($A$36,[ime.xls]Sheet1!C:O,13,0)/100, $A$3=VLOOKUP($A$3,[ime.xls]Sheet1!I:O,7,0)/100 ) ,VLOOKUP($A$3,[ime.xls]Sheet1!I:O,7,0) ,"One or more conditions were false" ) 

除此之外,我不确定你实际上想要比较你的查找值,所以你需要编辑第3行和第4行来执行你正在testing的比较结果。

编辑

根据您的示例数据描述的问题,使用SUMIFS(或AVERAGEIFS,其实并不重要)比VLOOKUP公式更好地解决这个问题。 由于每台机器每天只有一个效率%,所以SUM部分实际上不会添加任何东西,它只是返回与同一行上的date/机器组合对应的单个数值。

 =SUMIFS([ime.xls]Sheet1!$E:$E,[ime.xls]Sheet1!$B:$B,$A3,[ime.xls]Sheet1!$A:$A,$E$1) 

将其粘贴到工作表中的C3上,并将其复制到已使用的范围内。 它应该给你你想要的。

请注意,SUMIFS将在不匹配的情况下返回零,AVERAGEIFS将返回DIV / 0错误。 如果你愿意的话,你可以用这个来替代缺失的值,如下所示:

 =IFERROR(AVERAGEIFS([ime.xls]Sheet1!$E:$E,[ime.xls]Sheet1!$B:$B,$A3,[ime.xls]Sheet1!$A:$A,$E$1),"No efficiency value logged for this date") 

通常要匹配两列,并从第三个检索值,您可以使用这样的“数组公式”

=INDEX(C$2:C$100,MATCH(1,(A$2:A$100=E2)*(B$2:B$100=E2),0))

CTRL + SHIFT + ENTER确认

findE2匹配列A和F2的第一行匹配列B,并返回列C中同一行的值 – 如果没有匹配,则得到#N / A。

如果您想要一个更简单的公式,并且不介意使用帮助器列,那么在D2中复制下来,使用此公式来连接两个search列

=A2&"-"&B2

然后你的search公式可以简化为:

=INDEX(C$2:C$100,MATCH(E2&"-"&F2,D$2:D$100,0))

有几种方法可以帮助你实现目标。

第一种方法是使用IndexMatch来创build一个数组公式如下:

以下是一个来自http://blog.contextures.com/archives/2012/07/12/check-multiple-criteria-with-excel-index-and-match/的例子

 =INDEX($D$2:$D$10,MATCH(1,(A13=$B$2:$B$10)*(B13=$C$2:$C$10),0)) 

正如在网站上提到的,这是一个数组公式,而不是只使用公式input时,你需要按住Ctrl + Shift + Enter

要分解公式如何格式化:

 =INDEX(a,MATCH(1,(b=c)*(d=e),0)) 
  • a =包含所有数据的整个范围
  • b =要过滤的数据的第一个标准
  • c =第一个标准需要search的范围
  • d =要过滤的数据的第二个标准
  • e =第二个标准需要search的范围

确保在上例中正确的位置使用了$

第二种方法是使用连接将两个查找列连接在一起,然后使用Vlookupsearch连接列。