根据2个条件在列中查找值

时间:2016-03-03 15:44:55

标签: excel vba excel-vba

我有一个包含3列的文件。 A列包含300,000行,包含大约200个单独的ID,所有ID重复至少1,000次。 B列包含每行的日期。 C列包含我需要提取的值。

Col A中的200个ID中的每一个都可以具有多个值(例如ID 1234可能具有日期1/1 / 2001,1 / 3 / 2001,1 / 2/2015等)。同样,Col B上的每个日期都有多个ID(例如1/2/15可能有ID为1234,1874,1930,6043等)。

简而言之,我需要检查Col A和Col B中的值,以找到Col A中的相关ID和Col B中的最大值,并返回Col C中相关单元格中的值。

我查看了索引/匹配示例,但它们似乎并不合适。是否有关于我可以运行的宏的任何建议,这将完成所需的工作。

2 个答案:

答案 0 :(得分:4)

使用此数组公式:

=INDEX($C$1:$C$300000,MATCH(1,IF(($A$1:$A$300000="1234")*($B$1:$B$300000=MAX(IF($A$1:$A$300000="1234",$B$1:$B$300000))),1,0),0))

作为数组公式,必须在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter确认。

"1234"更改为具有相应ID的参考单元格。

答案 1 :(得分:4)

您可以使用数组公式完成此操作。首先,使用以下公式,当A列为1234时,您可以检索B列中的最大日期。请记住,在键入数组公式时必须使用Ctrl-Shift-Enter。

{=MAX(IF($A$2:$A$24=1234,$B$2:$B$24))}

请注意,您需要更改范围以包含所有数据,而不是第2-24行的测试数据。

既然您有一个公式来检索最大日期,您可以将其放入索引/匹配中,并再次使用Ctrl-Shift-Enter,使用下面的数组公式来检索C列中的值以进行行匹配1234和最大日期。

{=INDEX($C$2:$C$24,MATCH(1234&MAX(IF($A$2:$A$24=1234,$B$2:$B$24)),$A$2:$A$24&$B$2:$B$24,0))}