Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Excel数组查找公式_Arrays_Excel_Excel Formula - Fatal编程技术网

Arrays Excel数组查找公式

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”位于单元格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。因此,在这种情况下,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行。如果你想来,我可以进一步帮助你。