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 ) )
谁能帮我用 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 ) )