【问题标题】:Excel Array Lookup FormulaExcel 数组查找公式
【发布时间】:2015-08-17 19:01:05
【问题描述】:

我有两张如下表。对于公式,假设“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。它应该忽略范围内的 N/A。请注意,表 1 中的所有 ID 都会出现在表 2 中。但表 1 中的某些 id 列可能是 N/A。

=MAX(IF(A2:D2=A7:A11,B7:B11))

【问题讨论】:

  • 明确一点,在表 2 中,一个 ID 永远不会出现多次,对吧?
  • @rwilson 对,在表二中每个 ID 只出现一次。但是多个id的日期可以相同

标签: arrays excel excel-formula


【解决方案1】:

一个比预期更大更复杂的公式,但它会考虑到一个日期可以在数据集中出现多次。请务必使用 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")

我还添加了一些额外的错误处理。如果找不到匹配项,公式将返回“未找到匹配项”。

【讨论】:

  • 谢谢,我不明白公式,但它仍然只在某些情况下有效。
  • 如果你从与原帖相同的数据开始,然后将 a2:c2 更改为 b,d,e 并将 b 日期更改为 1/6/2015,公式输出 e (应该是 b)。
  • 嗯。当我这样做时,它显示为“b”。我在答案的底部添加了新图片。我是否按照您的建议正确设置了数据?
  • 是的,不知道为什么我会得到 e。你能试着改变一些东西吗……比如把 d 改成 2015 年 1 月 10 日。我仔细检查了您粘贴的内容和我的数据 - 它是相同的,但我的公式显示 e。 e 早些时候是对的,但是当我玩弄日期并更改 a2:c2 几次时,公式开始给我不正确的输出。
  • 啊,我在答案中再次粘贴了公式。我认为范围刚刚关闭。它不包括该范围内的第 6 行。如果您想来chat.stackoverflow.com/rooms/85263/excel-talk,我可以进一步帮助您。
【解决方案2】:

插入一个“iferror”。在上面的示例中,将公式更改为:

=MAX(IF(IFERROR(A2:D2,"")=A7:A11,B7:B11))

【讨论】:

  • 太好了,这解决了 N/A 问题,但我需要它来输出 ID,而不是日期。
  • 抱歉,没有看到您问题的最后一部分。添加索引匹配组合: =INDEX(A5:B9,MATCH(MAX(IF(IFERROR(A2:D2,"")=A5:A9,B5:B9)),B5:B9),1)
  • 这行得通。谢谢!为什么最后使用“1”?我通常在索引匹配公式中使用 0?
  • 其实某处似乎有一个小bug。如果您将 A2:C2 更改为 a、e、b 并在表 2 中,将 e 的日期设为 2015 年 1 月 4 日。当 d 不在行中时,公式输出 d。
  • @Moosa。这里的“1”是指INDEX函数的列号;但是,Match 函数的第三个参数“Match_Type”在此处留空,并且确实将函数设置为搜索近似匹配。这就是当您将 A2:C2 更改为“a”、“e”、“b”时返回“d”的原因。您可以在 match 函数的末尾添加一个零来搜索完全匹配,它会按预期在此处返回“e”;但是,在 A2:C2 中使用其他输入时,这也不会产生可靠的结果。
猜你喜欢
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多