多条件索引匹配

我花了几个小时试图解决这个问题,在网上find文章,但他们似乎没有工作。

我有一个Excel文档,其中包含两个选项卡上的数据,并希望下面的公式向我展示团队成员如果两个表单上的date和用户ID匹配都称为“Raised Source”和“Sheet1”

{=INDEX(Sheet1!F:F,MATCH('Raised Source'!E:E&'Raised Source'!F:F,Sheet1!A:A&Sheet1!B:B,0))} 

这会抛出一个#N / A错误

帮帮我!!!

首先我假设你的数据是这种格式的:

在这里输入图像说明 在这里输入图像说明

而你正在寻找使用'Raised Source'!数据进行search'Raised Source'! 通过Sheet1!searchSheet1! 并从Sheet1!返回团队Sheet1! 以及。

公式:

该公式将需要作为一个数组input(一旦复制和粘贴,而仍然在公式栏按CTRL + SHIFT + ENTER

=IFERROR(INDEX(Team,MATCH(1,(E1=TeamDate)*(F1=UserID),0)),"")

我已经使用命名的范围,使公式整洁这些是:

 Team =Sheet1!$F$1:$F$6 TeamDate =Sheet1!$A$1:$A$6 UserID =Sheet1!$B$1:$B$6 

请注意,当在整列上使用数组公式时,计算速度会大大减慢,所以最好避免这种情况,并且如果您希望添加,则可以确定您正在search的确切范围,或者将其超过一个合理的值。

逻辑:

=INDEX(array,row,[column]) – 这个公式将索引你指定的数组,你可以告诉它你想返回的行号和列号(例如=INDEX(B3:C4,1,1)将返回B3:C4的第一行和第一列中的值,即B3 。如果我们只想返回第一列,或者如果我们正在查找的数据仅是结果,我们不需要告诉公式列1列宽。

这就是公式出现的地方。我们使用MATCH(lookup_Value,Lookup_array,[match_type])公式来告诉我们在什么位置(或者在这种情况下哪一行)发生的值。

正常使用MATCH()将匹配一个范围内的确切单元格内容,但是因为我们正在使用一个数组公式,所以我使用MATCH(1,(E1=TeamDate)*(F1=UserID),0)

所以,我已经告诉公式发现1并告诉我它发生的位置。 两个条件都与Excel公式匹配时返回1TRUE代表1FALSE代表0 。 当这个公式工作通过行,如果两个结果匹配并返回TRUE那么数组将存储1*1这是1 ,当然,如果其中一个或两个都是FALSE那么它将返回1*0 0*10*0所有这些都导致0

由于命名范围全部从同一行开始,所以相对位置(或直到1出现的次数)将始终是您希望INDEX()公式返回的行号。

IFERROR(value,value_if_error) – 如果找不到匹配项,则公式将抛出一个错误,因为它无法将1与我创build的数组匹配。 如果发生这种情况,我已经告诉过这个公式,我希望它返回,"")而不是一个空白单元格。 你可以更新这个任何你想要的文本,也许,"Not Found")

在另一个答案的公式中的另一个IF()是特定于这个问题的,因为他们只想知道有一个匹配,而不是从该行返回的东西。

输出:

在这里输入图像说明