我有一个我正在研究的公式,它应该从另一个电子表格中提取数据 . 我有一个半工作的配方,但需要另一半真正将它们联系在一起 . 我需要它做的是在同一行中寻找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]包含我正在寻找匹配的值 . 任何人都可以让我知道我做错了什么吗?为了完成这项工作,必须满足这两个条件 .
以下是我想要完成的一个示例 .
3 回答
对于您要实现的目标,有几种方法 .
第一种方法是使用
Index
和Match
创建一个数组公式,如下所示:这是一个来自http://blog.contextures.com/archives/2012/07/12/check-multiple-criteria-with-excel-index-and-match/的示例
正如网站上提到的,它是一个数组公式,因此当您使用公式时,不需要按Enter键,您需要按住Ctrl Shift Enter .
要细分公式的格式:
a =包含所有数据的整个范围
b =要过滤的数据的第一个标准
c =需要搜索第一个条件的范围
d =要过滤的数据的第二个条件
e =需要搜索第二个条件的范围
确保在正确的位置使用
$
,如上例所示 .第二种方法是使用
Concatenate
将两个查阅列连接在一起,然后使用Vlookup
搜索连接列 .你的公式并没有告诉它该怎么做 . 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 .现在你需要将它应用到你想要做的事情上 . 像这样的东西:
除此之外,我不确定您实际上是在尝试比较查找值,因此您需要编辑第3行和第4行来执行您实际尝试进行的比较 .
EDIT
基于样本数据描述的问题,使用SUMIFS(或AVERAGEIFS,并不重要)可以比VLOOKUP公式更好地解决这个问题 . 由于每台机器每天只有一个效率%,因此SUM部分实际上不会添加任何内容,它只会返回与同一行上的日期/机器组合对应的单个数值 .
将其粘贴到工作表上的C3中,然后将其复制到使用的范围内 . 它应该给你你想要的东西 .
注意,SUMIFS将在没有匹配的地方返回零,AVERAGEIFS将返回DIV / 0错误 . 如果需要,您可以利用此优势替换缺失值,如下所示:
通常在两列中匹配并从第三列中检索值,您可以使用这样的“数组公式”
=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))