使用“ MAXIFS”功能时获取行号

时间:2018-07-23 13:01:01

标签: excel-2016

我正在使用MAXIFS(或类似名称)来标识表格中的所需行。但我不需要最大值,我需要相邻列中的数据。示例:

=MAXIFS(TableComments1[CommentDate];TableComments1[T.Number];TableView1[@Number])

基本上,在此示例中,我正在搜索与"Number"相匹配的行以及最新日期。但是在下一步中,我需要获取日期的行号以启用INDEX并返回适当的列(TableComments1[Comment])。

我尝试了不同的方法-没有成功。 PS:性能在这里也很重要。

更新,查找表示例:"TableComments1"

T.Number      | Comment      | CommentDate
==============+==============+===========
SCTASK0073347 | correction   | 22/07/2018
SCTASK0073347 | update 11    | 25/07/2018
SCTASK0073347 | update 2     | 21/07/2018

PS:这里不可以对"CommentDate"进行排序。

1 个答案:

答案 0 :(得分:0)

经过几天的摸索,终于发布了上述问题,我自己找到了解决方案。不确定它是否是最好的,但性能似乎还可以。

请注意:可以通过对表“ CommentDate”进行排序来实现更简单的解决方案。这不能保证,并且在本用例中基于问题输入也是不希望的。

回顾:我们希望在表TableView1中添加列“ Number”的最新注释,并在TableComments1中查找包含注释历史记录的

我从另一篇文章中得到了一个想法,可以使用helper列来组合两个条件。新表格布局:

T.Number      | Comment      | CommentDate | Helper1
==============+==============+=============+===================
SCTASK0073347 | correction   | 22/07/2018  | 43303SCTASK0073347
SCTASK0073347 | find this!   | 25/07/2018  | 43306SCTASK0073347
SCTASK0073347 | update 2     | 21/07/2018  | 43302SCTASK0073347
TASK9999      | comment      | 25/07/2018  | 43306TASK9999

公式细分

“帮助器”列的公式仅会CONCATENATE 2列:

 =[@CommentDate]&[@[T.Number]]

让我们说我们想要:SCTASK0073347 注意:在帮助器列中,我们具有值“ 43306SCTASK0073347”; 其中“ 43306是日期“ 25/07/2018”的数字表示。

这将搜索“ Number”的匹配项,并返回最新的“ CommentDate”:

=MAXIFS(TableComments1[CommentDate];TableComments1[T.Number];TableView1[@Number])

返回“ 25/07/2018”。让我们将以上缩写缩写为<<MostRecentDate>>,以便于下一步阅读。

此步骤将在“帮助器”列中搜索上述公式<<MostRecentDate>>和“ Number”的组合:

 =MATCH(<<MostRecentDate>>&TableView1[@Number];TableComments1[Helper1];0)

..返回与助手表值“ 2”匹配的行号(43306SCTASK0073347)。

从现在开始,我们使用MATCH(现在返回想要的行)和INDEX以VLOOKUP可以使用的样式:

 =INDEX(TableComments1[Comment];MATCH(<<MostRecentDate>>&TableView1[@Number];TableComments1[Helper1];0))

...返回所需的注释为“ find this!”的列。

完整/最终公式,包括IFNA函数,用于清除无注释的空白查询:

 =IFNA(INDEX(TableComments1[Comment];MATCH(MAXIFS(TableComments1[CommentDate];TableComments1[T.Number];TableView1[@Number])&TableView1[@Number];TableComments1[Helper1];0));"")