首页 文章

如果AND声明优秀

提问于
浏览
0

我有一个我正在研究的公式,它应该从另一个电子表格中提取数据 . 我有一个半工作的配方,但需要另一半真正将它们联系在一起 . 我需要它做的是在同一行中寻找2个单元格之间的匹配,然后提供正确的值 .

例如,如果(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]包含我正在寻找匹配的值 . 任何人都可以让我知道我做错了什么吗?为了完成这项工作,必须满足这两个条件 .

以下是我想要完成的一个示例 .

Sample

3 回答

  • 0

    对于您要实现的目标,有几种方法 .

    第一种方法是使用 IndexMatch 创建一个数组公式,如下所示:

    这是一个来自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))
    

    正如网站上提到的,它是一个数组公式,因此当您使用公式时,不需要按Enter键,您需要按住Ctrl Shift Enter .

    要细分公式的格式:

    =INDEX(a,MATCH(1,(b=c)*(d=e),0))
    
    • a =包含所有数据的整个范围

    • b =要过滤的数据的第一个标准

    • c =需要搜索第一个条件的范围

    • d =要过滤的数据的第二个条件

    • e =需要搜索第二个条件的范围

    确保在正确的位置使用 $ ,如上例所示 .

    第二种方法是使用 Concatenate 将两个查阅列连接在一起,然后使用 Vlookup 搜索连接列 .

  • 0

    你的公式并没有告诉它该怎么做 . 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行来执行您实际尝试进行的比较 .

    EDIT

    基于样本数据描述的问题,使用SUMIFS(或AVERAGEIFS,并不重要)可以比VLOOKUP公式更好地解决这个问题 . 由于每台机器每天只有一个效率%,因此SUM部分实际上不会添加任何内容,它只会返回与同一行上的日期/机器组合对应的单个数值 .

    =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")
    
  • 1

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

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

    用CTRL SHIFT ENTER确认

    找到E2匹配列A的第一行,F2匹配列B并返回C列中同一行的值 - 如果没有匹配则得到#N / A.

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

    =A2&"-"&B2

    然后您的搜索公式可以简化为:

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

相关问题