Arrays Excel数组查找公式
我有两张桌子,如下所示。对于公式,假设“ID1”位于单元格A1上,表格之间有一个空行,因此“ID”位于单元格A4上Arrays Excel数组查找公式,arrays,excel,excel-formula,Arrays,Excel,Excel Formula,我有两张桌子,如下所示。对于公式,假设“ID1”位于单元格A1上,表格之间有一个空行,因此“ID”位于单元格A4上 ID1 ID2 ID3 ID4 ID_OF_MAXDATE a b d #N/A formula_here ID DATE a 1/1/2015 b 1/2/2015 e 1/3/2015 d 1/4/2015 g 1/5/2015 在公式中,如果id在该行中,我需要最大日期的id。
ID1 ID2 ID3 ID4 ID_OF_MAXDATE
a b d #N/A formula_here
ID DATE
a 1/1/2015
b 1/2/2015
e 1/3/2015
d 1/4/2015
g 1/5/2015
在公式中,如果id在该行中,我需要最大日期的id。因此,在这种情况下,a、b、d中的最大日期是d,即2015年1月4日。所以我希望公式输出d
到目前为止,我有以下内容,但N/A将其忽略。如果没有N/A值,则以下输出最大日期。但是,我需要最大日期的ID。它应该忽略范围内的不适用项。注意,表1中的所有ID将显示在表2中。但表1中的某些id列可能不适用
=MAX(IF(A2:D2=A7:A11,B7:B11))
插入一个“iferror”。在上面的示例中,将公式更改为:
=MAX(IF(IFERROR(A2:D2,"")=A7:A11,B7:B11))
这是一个比预期更大、更复杂的公式,但它将考虑到一个日期可以在数据集中出现多次。确保并使用CTRL+SHIFT+enter键输入
=IF(SUM(IFERROR(MATCH(A2:D2,$A$6:$A$10,0),""))>0,LOOKUP(REPT("Z",255),IF(MAX(IF(FREQUENCY(IFERROR(MATCH(TRANSPOSE(A2:D2),$A$6:$A$10,0),""),ROW($B$6:$B$10)-ROW($B$6)+1),$B$6:$B$10))=IF(FREQUENCY(IFERROR(MATCH(TRANSPOSE(A2:D2),$A$6:$A$10,0),0),ROW($B$6:$B$10)-ROW($B$6)+1),$B$6:$B$10),$A$6:$A$10)),"No Match Found")
我还添加了一些额外的错误处理。如果无法找到匹配项,公式将返回“未找到匹配项”
很好,这解决了N/A问题,但我需要它来输出ID,而不是日期。很抱歉,没有看到问题的最后一部分。添加一个索引匹配组合:=索引(A5:B9,match(MAX)(IF(IFERROR(A2:D2,“”=A5:A9,B5:B9)),1)这是有效的。谢谢你为什么在结尾用“1”?我通常在索引匹配公式中使用0?实际上,似乎有一个小错误。如果将A2:C2更改为a、e、b,并且在表2中,将e的日期改为2015年1月4日。当d不是偶数时,公式输出d。@Moosa。这里的“1”是指索引函数的列号;但是,Match函数的第三个参数“Match_Type”在此留空,实际上是将函数设置为搜索近似匹配。这就是将A2:C2更改为“a”、“e”、“b”时返回“d”的原因。您可以在match函数的末尾添加一个零来搜索精确的匹配,它会像预期的那样在这里返回“e”;然而,当使用A2:C2中的其他输入时,这也不会有可靠的结果。更清楚的是,在表2中,单个ID不会出现多次,对吗?@rwilson对,在表2中,每个ID只出现一次。但是对于多个身份证,日期可以是相同的,我不理解这个公式,但它仍然只在某些情况下有效。如果你从原始帖子中相同的数据开始,然后将a2:c2更改为b,d,e,并将b日期更改为2015年1月6日,公式输出e(应该是b)。嗯。当我这样做时,它显示为“b”。我在答案的底部添加了新的图片。我的数据设置是否如您所建议的那样正确?是的,不确定我为什么会得到e。你能试着改变一下吗…比如说把d改成2015年1月10日。我仔细检查了你粘贴的内容和我的数据-这是相同的,但我的公式显示e。e在前面是对的,但是当我处理日期并更改a2:c2几次时,公式开始给我错误的输出。啊,我在答案中再次粘贴了公式。我想射程太远了。它不包括范围内的第6行。如果你想来,我可以进一步帮助你。