如果同名具有多个记录,如何查找最新记录并在不同列中设置值

时间:2016-07-23 20:52:36

标签: excel excel-vba macros vba

我正在尝试根据State列获取Version,但无法获得所需的结果。如果同一Name条记录中包含最新Version,则State应为SIGNED,否则应为SUPERSEDED

Name    Version State       OwnerName   Language    Keywords
Mohan   1       SUPERSEDED  x           ENG         ABCD
Mohan   2       SUPERSEDED  y           ENG         EFGH
Mohan   3       SUPERSEDED  z           ENG         IJKL
Mohan   4       SIGNED      x           ENG         ABCD
Shayam  1       SUPERSEDED  y           ENG         EFGH
Shayam  2       SIGNED      z           ENG         IJKL
Ram     1       SUPERSEDED  x           ENG         ABCD
Ram     2       SIGNED      y           ENG         EFGH
Sourabh 1       SIGNED      z           ENG         IJKL

1 个答案:

答案 0 :(得分:3)

使用此数组公式:

=IF(B2=MAX(IF($A$2:$A$10=A2,$B$2:$B$10)),"SIGNED","SUPERSEDED")

把它放在C2中。

然后因为它是一个数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter来确认。如果操作正确,Excel会将{}放在公式周围。

然后复制。

enter image description here

如果您使用的是Excel 2010或更高版本,则可以使用此非CSE公式。它不需要Ctrl-Shift-Enter,但输入正常:

=IF(B2=AGGREGATE(14,6,$B$2:$B$10/($A$2:$A$10=A2),1),"SIGNED","SUPERSEDED")

enter image description here

如果您的数据始终按A列和B列排序,则可以使用非数组公式:

=IF(A2<>A3,"SIGNED","SUPERSEDED")

enter image description here