Excel 从单元格中的多行文本中提取特定日期和时间的公式

Excel formula to extract specific date and time from multiple lines of text in a cell

谁能帮我用 excel 公式或宏来提取倒数第​​二行的日期和时间?此文本是部分或票据转储导出,我需要首次确认时的日期和时间戳。名称可以变化,文本行也可以变化,但是,我总是需要在倒数第二行中显示日期和时间。请帮忙!

2021-08-01 19:17:21 - Kamatham Rakesh(补充评论) 示例文本

2021-08-01 19:04:48 - Shelley Black(补充评论) 示例文本

2021-08-01 19:04:31 - Kamatham Rakesh(补充评论) 示例文本

2021-08-01 19:04:30 - Shelley Black(补充评论) 示例文本

2021-08-01 19:04:05 - Shelley Black(补充评论) 示例文本

2021-08-01 19:03:41 - Shelley Black(补充评论) 示例文本

2021-08-01 19:03:25 - Shelley Black(补充评论) 你好

2021-08-01 19:03:17 - Kamatham Rakesh(补充评论) 嗨雪莉

2021-08-01 19:03:03 - Kamatham Rakesh(补充评论) 感谢您的等待。示例文本

2021-08-01 19:02:29 - Shelley Black(补充评论) 示例文本

一种方法是:

=DATEVALUE( LEFT( INDEX( A:A, LARGE(IF( ISTEXT(A:A), ROW(A:A) ),2) ), 19) )
+ TIMEVALUE( LEFT( INDEX( A:A, LARGE(IF( ISTEXT(A:A), ROW(A:A) ),2) ), 19) )

这假设数据在某个任意长度的列 A 中布局:

如果您的数据非常长,这可能需要花费很多时间来计算。如果您确切知道数据集中有多少行,可能会有更高效的计算方法。不幸的是,必须重复 IF,因为 TIMEVALUE 和 DATEVALUE 是单独计算的,并且在 Excel 2016 年,您无法访问 LET 或 FILTER,这会加快速度。

好的 - 如果所有文本都在一列中,这可能有效:

=INDEX( LEFT( FILTERXML( "<main><sub>" & SUBSTITUTE( A2, CHAR(10), "</sub><sub>" ) & "</sub></main>", "//sub" ), 19 ),
        ROWS( FILTERXML( "<main><sub>" & SUBSTITUTE( A2, CHAR(10), "</sub><sub>" ) & "</sub></main>", "//sub" ) )-2 )

这假设行由 2 个回车 return 分隔(即 CHAR(10))。它正在传递日期时间的文本。

如果您想 return 日期时间值,使用辅助单元部署它可能会容易得多,但您也可以这样做:

=DATEVALUE( INDEX( LEFT( FILTERXML( "<main><sub>" & SUBSTITUTE( A2, CHAR(10), "</sub><sub>" ) & "</sub></main>", "//sub" ), 19 ),
               ROWS( FILTERXML( "<main><sub>" & SUBSTITUTE( A2, CHAR(10), "</sub><sub>" ) & "</sub></main>", "//sub" ) )-2 ) )
+ TIMEVALUE( INDEX( LEFT( FILTERXML( "<main><sub>" & SUBSTITUTE( A2, CHAR(10), "</sub><sub>" ) & "</sub></main>", "//sub" ), 19 ),
               ROWS( FILTERXML( "<main><sub>" & SUBSTITUTE( A2, CHAR(10), "</sub><sub>" ) & "</sub></main>", "//sub" ) )-2 ) )