使用 "MAXIFS" 函数时获取行号

Get row number when using "MAXIFS" function

我正在使用 MAXIFS(或类似的)来识别 table 中需要的行。但我不需要最大值,我需要来自相邻列的数据。示例:

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

基本上,在这个例子中,我正在搜索行,匹配 "Number" 和最新日期。但在下一步中,我需要获取日期的行号,以便能够使用 INDEX 和 return 适当的列 (TableComments1[Comment])。

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

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

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

PS:排序 "CommentDate" 不是这里的选项。

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

请注意:可以通过对 table“CommentDate”进行排序来实现更简单的解决方案。根据问题输入,在这个用例中,这无法得到保证,也不是我们所期望的。

回顾:我们希望在 table TableView1 中添加对列“Number”的最新评论,并从 TableComments1 中查找包含评论历史记录:

我从另一个 post 那里得到了使用辅助列来组合 2 个条件的想法。新 table 布局:

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

公式细分

Helper 列的公式只是连接 2 列:

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

假设我们想要:SCTASK0073347 注意:在辅助列中我们有值“43306SCTASK0073347”; 其中“43306”是日期“25/07/2018”的数字表示。

这将搜索“Number”和 return 最近的“CommentDate”的匹配项:

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

返回“25/07/2018”。让我们将上面的内容缩写为 <<MostRecentDate>> 以便下一步的可读性。

这一步,将在 Helper 列中搜索上述公式 <<MostRecentDate>> & "Number" 的组合:

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

..returning 行号 (2) 匹配助手 table 值“43306SCTASK0073347”.

从现在开始,我们使用 MATCH(现在 return 想要的行)和 INDEX 的样式 VLOOKUP 会做:

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

...return 使用所需注释“find this!”编辑所需列。

Full/final 公式,包括 IFNA 函数以清除没有注释的空白查找:

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