MS Excel中是否有2个值查找功能可以执行以下操作?

时间:2015-08-10 13:10:17

标签: excel match formula

我为此疯狂。看起来很简单,但我无法弄清楚这一点。我有两个工作表。第一个工作表是我的数据。第二个就像一个答案键。在检查检查时,表1中的A1:B1与表2中第52行中的条件匹配,因此,列C中的值是“MGC”。执行此功能的公式是什么?没有数据就很难解释,所以我粘贴了样本电子表格的链接。非常感谢你。

此处的示例电子表格。 https://docs.google.com/spreadsheets/d/1_AjuNfCdGfEM-XkqPa6W4hSIxQg4NM2Vg4c2C1pQ_vQ/edit?usp=sharing

此处截图。 (不会让我发布我没有名声)spreadsheet view

5 个答案:

答案 0 :(得分:1)

在Sheet2中,在A列前面插入一列,并将公式放在A2 =C2&D2中。 然后在Sheet1,Cell C2中使用公式=vlookup(A2&B2,Sheet2!A:B,2,0)

第一个使用连锁键进行查找,然后第二个查找该键。

答案 1 :(得分:0)

index(match())怎么样?如果我已正确理解您需要匹配第一张中的A和B列,请检查第2页上的B和C中的相关值,以便将工作表2列a返回到工作表1列c。

第三版尝试:

  

= INDEX(Sheet 2中$ C $ 1:$ C $ 360 MATCH(Sheet 1中A1&安培; Sheet 1中B1,Sheet2的$ B $ 1:!!!$ B $ 360安培; Sheet 2中$ C $ 1:$ C $ 360,0))

基本上这样做是使用连接,&运算符来指定您正在寻找"标准A" &安培; "标准B"在表1中,它生成字符串" Criteria A Criteria B",它在匹配函数的第一部分中提供。 然后在第二个中,它表示将这与我在表2中的所有变量相匹配,方法与concantenation相同。 匹配函数的最后一部分(0)指定您想要一个' exact'匹配

然后它提供了这个作为索引函数的引用,然后索引函数找到与你想要的值相交的行,并返回它。

如前所述https://support.microsoft.com/en-us/kb/59482这是一个数组公式,因此它的行为不同,必须以不同的方式输入。 https://support.office.com/en-za/article/Guidelines-and-examples-of-array-formulas-7d94a64e-3ff3-4686-9372-ecfd5caa57c7

答案 2 :(得分:0)

如果没有VBA,有(至少)两种方法可以做到这一点。

使用已填写的列表

第一个依赖于您的数据可以重新排序的假设,因此“未报告”的所有内容都位于顶部,“报告”的所有内容都在此之下(反之亦然)。假设是这种情况(并且它似乎已经按照这样排序),我们将使用OFFSET函数创建一个新范围,该范围仅显示与“未报告”或“报告”对齐的值。

偏移量对纸张上的某个点进行给定引用,然后向下/向上移动&向左/向右看看你想要返回什么参考。然后,它返回给定高度和给定宽度的单元格范围。在这里,我们希望从左上角的Sheet2开始,向下移动,直到我们找到“未报告”或“报告”这一术语。一旦找到该术语,我们将要向右移动一列(从表2中拉出列B),然后具有与“未报告”或“报告”单元格一样多的行的“高度”。这将在第1页的A1中看起来如下,向下复制:

=OFFSET(Sheet2!$A$1,MATCH(A1,Sheet2!A:A,0)-1,1,COUNTIF(Sheet2!A:A,A1),1)

这说:首先,从sheet2上的单元格A1开始。然后在A1中找到该术语(在sheet2上“未报告”或“报告”!A:A(我们减去1因为OFFSET从A1开始 - 所以如果你的数据从A1开始,我们需要实际保持在“0”。如果你在sheet2上有标题,你不需要这个-1)。然后,向右移动1列。向下移动行的次数与Sheet2列A一样,在Sheet1 A1中找到术语。保持1列宽。 ,这将在sheet2上留下一个范围,显示列A的整个长度,列A与sheet1 A1中的术语匹配。

现在我们需要使用OFFSET,并使用它来找出Sheet1 B1中的术语何时匹配Sheet2列B.这将按如下方式工作:

=MATCH(B1,[FORMULA ABOVE],0)

这显示了从上面创建的特殊OFFSET数组开始的向下行数,B1中的术语与sheet2中的B列匹配。要使用此信息从工作表2上的C列中提取结果,我们可以使用INDEX函数,如下所示:

=INDEX([FORMULA ABOVE],MATCH(B1,[FORMULA ABOVE],0))

因为这在单个单元格中相当复杂,我们可以通过使用VLOOKUP来简化它,这只需要输入OFFSET函数一次。这将如下工作:

=VLOOKUP(B1,[FORMULA ABOVE],2,0)

这采用上面的OFFSET公式,在B1中找到匹配的术语,并移动到第二列以从sheet2中的列C获取值。因为我们将使用VLOOKUP,所以需要调整上面的偏移公式以提供2列数据而不是1.一起,这将看起来如下:

SHEET1,C1& 1的最终公式COPIED DOWN

=VLOOKUP(B1,OFFSET(Sheet2!$A$1,MATCH(A1,Sheet2!A:A,0)-1,1,COUNTIF(Sheet2!A:A,A1),2),2,0)

使用阵列公式的选项

只有对数据进行排序以便将REPORTED和UNREPORTED行组合在一起时,上述方法才有效。如果它们无法排序,您可以使用ARRAY FORMULA,它基本上采用一个通常适用于单个单元格的公式,并在整个单元格范围内运行它。它返回一个结果数组,必须将其减少到单个值。一个基本的数组公式看起来像这样[假设这个例子A1 = 1,A2 = 2 ... A5 = 5]:

=IF(A1:A5>3,A1:A5,"")

按CTRL + SHIFT + ENTER确认此(以及所有数组函数),而不仅仅是ENTER。这将查看A1:A5中的每个单元格,如果该值大于3,则它会给出该单元格中的数字 - 否则返回“”。在这种情况下,结果将是数组{“”;“”;“”; 4; 5}。要获得单个总数9,请将其包装在SUM函数中:

=SUM(IF(A1:A5>3,A1:A5,""))

在您的情况下,我们将要使用数组公式来查看Sheet2中的哪一行与Sheet1中的A1匹配,以及Sheet1中的B1。这将是这样的:

=IF(Sheet2!$A$1:A$100=A1,IF(Sheet2!$B$1:$B$100,ROW($B$1:$B$100),""),"")

这将检查表2中A列中的哪些行与A1匹配。对于那些,它然后检查表2中B列中的哪些行匹配B1。对于那些,它从该匹配中拉出行号。其他一切都返回“”。假设没有重复项,则只返回1个行号。要从结果数组中提取该数字,请将整个事物包装在MATCH函数中。现在您已经拥有行号,您可以使用INDEX函数将C中的结果拉到该行,如下所示:

最终阵列公式方法

=INDEX($C$1:$C$100,MAX(IF(Sheet2!$A$1:A$100=A1,IF(Sheet2!$B$1:$B$100,ROW(Sheet2!$B$1:$B$100),""),"")))

当您键入此公式时,请记住使用CTRL + SHIFT + ENTER而不是ENTER确认。请注意,我没有引用所有Sheet2!A:A,因为数组公式在大范围内运行非常缓慢。

答案 3 :(得分:0)

以下公式应该可以在不对数据表进行任何更改的情况下工作。

=INDEX(Sheet2!$A$1:$A$360,MATCH(Sheet1!A1,IF(Sheet2!$C$1:$C$360=Sheet1!B1,Sheet2!$B$1:$B$360),0))

请务必将此公式另存为CTRL+SHIFT+ENTER

的数组

可以在Microsoft Support上找到有关如何针对多个条件使用INDEXMATCH的文档。

答案 4 :(得分:0)

目前尚不清楚你想对没有相应匹配的倍数做什么。在Sheet1中,txed被列为Unreported两次; kntyctap列为未报告三次。 Sheet2上只有一个对应的匹配项。

多个条件的非数组标准公式匹配

对于Excel 2010及更高版本,请在Sheet1中使用此标准公式!C1:

=IFERROR(INDEX(Sheet2!$A$1:$A$999,AGGREGATE(15,6,ROW(1:999)/((Sheet2!$B$1:$B$999=A2)*(Sheet2!$C$1:$C$999=B1)), COUNTIFS(A$1:A1, A1, B$1:B1, B1))), "")

对于2010年之前的Excel版本,请在Sheet1中使用此标准公式!C1:

=IFERROR(INDEX(Sheet2!$A$1:$A$999, SMALL(INDEX(ROW($1:$999)+((Sheet2!$B$1:$B$999<>A1)+(Sheet2!$C$1:$C$999<>B1))*1E+99, , ), COUNTIFS(A$1:A1, A1, B$1:B1, B1))), "")

我在后一个公式中处理了IFERROR function的错误。 Excel 2003和之前的版本可能必须使用IF(ISERROR(..., ...))组合。