我正在使用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"
进行排序。
答案 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));"")